There are basically four methods to call .NET assembly from native VC++ code. Microsoft
All-In-One Code Framework has working examples
that demonstrate the methods.
1.
Native VC++ module calls
CLR Hosting APIs
to host CLR, load and call the .NET assembly. (All-In-One Code Framework Sample Code: CppHostCLR)
2.
If the .NET assembly can be exposed as a COM component, native VC++ module can call into the .NET assembly through .NET – COM interop. (All-In-One
Code Framework Sample Code: CppCOMClient)
3.
Reverse PInvoke: the managed code call native passing a delegate the native code can call back. (All-In-One Code Framework Sample Code: CSPInvokeDll)
4.
If the module containing native VC++ code is allowed to
enable CLR,
the native VC++ code can call .NET assembly directly through the “It Just Works”, or “IJW”, mechanism. (All-In-One Code Framework Sample Code: CppCLIWrapLib)
Related Thread:
http://social.msdn.microsoft.com/Forums/en/netfxtoolsdev/thread/e615cc28-eac5-4dad-a888-f9ffa563cafb