I'm afraid, if you don't know what's managed, my Answer can hardly help you. Also, if you have no clue, your second Question is premature: you will hardly understand any Answers before you're really comfortable with both managed and unmanaged without trying to use managed DLL in unmanaged code (the other way around is much, much easier but still by far not trivial). OK, managed DLL is the library written for .NET platform. On .NET, there are no really DLLs and EXE in exact same sense as Windows DLLs. For .NET this is just common file name extensions, with DLLs used as libraries. More fundamentally, executables in .NET form something called assemblies which use each other during development and run-time as well. The code is called managed because of memory managements based on
Garbage Collection. Better now?
Again, consider all this only as a set of key words; you would need to do your search and spend a lot of time on each concept. Learning .NET is something like learning yes another operating systems of a very different type plus a conceptually new language.
Now, using in native C++ code…
It is a know notion that this is not possible, or only possible via COM. Another way is using the new C++ dialect called C++/CLI (actually this language is the ECMA standard).
This is one more solution (based on standards). Please see my Answer to this Question:
loading C# DLL in MFC[
^].
—SA