Is it possible to use an unmanaged DLL from a .NET language without the source code to the DLL?
With Visual C++ .NET, you can wrap the DLL with a managed .NET class wrapper. This will allow you to use that DLL from any of the .NET languages, as if it was just another managed class.
Is there a performance hit using the .NET Framework memory manager as opposed to the unmanaged memory manager with MFC?
Actually the .NET Framework memory manager is much more efficient in allocating classes and structures than the memory manager in the MFC library. MFC classes can cause the heap to become fragmented with no automatic maintenance to defragment it. The .NET Framework memory manager is kept clean and efficient and uses dead objects when possible to maximize performance.