How do I call a .NET code from native C++ (unmanaged code)? I want to expose .NET code to my unmanaged (C++) application and then use them. More specifically, I want to call
You can always embed Mono. I have personally done it in two projects so far and it's easy enough. Follow Embedding Mono for more information.
You could expose the managed component as COM object.
I've written about it just recently. It was about Delphi, but that doesn't mean it won't work with C++ as well.
.NET component in DELPHI 2009
Even without knowing much about C++, I still know that IUnknown and COM-compatible interface references should be usable just fine from C++ (in the case you need to pass objects, not just structures).
This C# code would export a function "YourExportName" that can be used just like any c-compatible function would be used.
class Sample
{
[DllExport("YourExportName")]
static int TestFunction(int left, int right)
{
return left + right;
}
}
Check How to call a managed DLL from native Visual C++ code in Visual Studio.NET or in Visual Studio 2005