SDK: execute C# directly


#1

Does anyone know if there’s a way to execute C# code directly from the SDK?

Currently I’m using MXS as an interop, sending a script from SDK to MXS, and then having MXS execute the C# and return any compiler warnings/errors/etc.

Is there a more direct way of doing this?

Imagine I want to execute the following C# code:

float f = Math.Abs(-1.0f);

and have the value pass back to C++. Is it possible? I know how to do it with MXS, but I want to cut out the middleman.


#2

in project settings you have to have General::Common Language Runtime Support set to Common Language Runtime Support (/clr)

then you can use stuff like

#using <System.dll> 

using namespace System;
using namespace System::IO;
using namespace System::Net;
using namespace System::Text;
using namespace msclr::interop;

at the top of the file, any includes

#includes<msclr\.......>

it can look quite funky in a cpp file…

WebRequest^ request = WebRequest::Create(marshal_as<String^>(url));

marshal_context^ context = gcnew marshal_context();
string*  result = new string(context->marshal_as<const char*>(responseFromServer));

theres also a couple of pragmas too

#pragma unmanaged
#pragma managed

though it does beg the question what’s in the c# runtime that not in cpp runtime,? I’m sure I saw some absolute functions last time i looked :wink:


#3

Thanks Klvnk, I’ll look further into that :slight_smile: