Because of performance reasons I did not re-write my program (using intense interative vector / matix calculations) in C#. Instead, I ported it to an MFC DLL and wrote the GUI in C# windows forms. Using PInvoke I connect the two up using an intermediate C# managed DLL. With the help of your article I think I can eliminate the need for the intermediate DLL. I just need to use the InteropServices from within C++. The fact that managed C++ and unmanaged C++ can exist in the same file is great.