This is another one, radically different approach: direct export from .NET Assembly to unmanaged. Many would say this is not possible, but it's not true: this is allowed by CLR standard and perfectly sage and legitimate. This approach is very lean and, in my opinion, is better then the other two, correctly pointed out by Nishant.
You will find explanation of the idea and good set of references in my other Answer:
loading C# DLL in MFC[
^]
—SA