Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SDK
- auto corecrlDir = Environment::getVariable(
- "CORECLR_DIR",
- "~/.dnx/runtimes/dnx-coreclr-linux-x64.1.0.0-rc2-20221/bin/");
- //auto corecrlDir = "C:\\Users\\Javier\\.dnx\\runtimes\\dnx-coreclr-win-x64.1.0.0-rc1-update1\\bin";
- log.debug("CORECLR_DIR = ", corecrlDir);
- log.debug("CORECLR_DIR EXISTS? = ", FileUtils::exists(corecrlDir));
- // CoreCLRConfig
- coreclr::Config config { corecrlDir };
- log.debug("CORECLR_LIB = ", config.coreclrLib());
- log.debug("CORECLR_LIB EXISTS? = ", FileUtils::exists(config.coreclrLib()));
- // CoreCLREmbedded
- auto host = coreclr::Host::make_shared(config);
- host->init("../sample/libs");
- if (host->isValid())
- {
- const auto dll = "../sample/libs/sample.dll";
- const auto className = "Sample.Test";
- FunctionFactory factory(host, dll, className);
- auto getInt = factory.create(
- "GetInt",
- Type::Int, Type::Void);
- auto addTwo = factory.create(
- "AddTwo",
- Type::Int, Type::Int);
- auto toggleBool = factory.create(
- "ToggleBool",
- Type::Bool, Type::Bool);
- auto echo = factory.create(
- "Echo",
- Type::Void, Type::String);
- auto returnEcho = factory.create(
- "ReturnEcho",
- Type::String, Type::String);
- auto echoIntArray = factory.create(
- "EchoIntArray",
- Type::Void, Type::IntArray);
- int r1 = getInt.invoke<int>();
- int r2 = addTwo.invoke<int>(r1);
- bool b1 = toggleBool.invoke<bool>(false);
- echo.invoke<void>("Hola cacerola ? ");
- auto str = returnEcho.invoke<std::string>("Hola desde c++");
- auto intArr = std::vector<int>{1,2,3,4,5};
- echoIntArray.invoke<void>(intArr);
- log.debug("Result = ", r1);
- log.debug("Result 2 = ", r2);
- log.debug("Toggle Bool = ", b1);
- log.debug("ReturnEcho = ", str);
- host->shutdown();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement