C++/CLI is a powerful thing; I like the answers based on it.
There is another, little know method based on direct exporting of the method from .NET assembly to unmanaged. Many though it was impossible, but in fact CLI standard allows it. This method makes the solution very smooth, and knowledge of C++ or C++/CLI is not required.
I already gave comprehensive information and references in my old answer:
Please see:
loading C# DLL in MFC[
^].
—SA