The majority of my experience is with high level languages like Java and VB.NET. I do have some experience with C++ (at university).
I understand the difference between a COM DLL and a DLL produced by a .NET compiler. I don’t fully understand the difference between a COM DLL and a Windows DLL generated by the C and C++ compiler.
I want to use C++ DLL in a .NET program. I have managed to get this working. My question is specifically: What is the difference between a DLL produced by C++ and a DLL produced by VB6 (COM based).
I have spent an hour Googling this and looking on MSDN. I though I would find my answer without having to ask a question, but I have not.
There’s a giant difference between the two. The list is too long to reproduce accurately in an SO post, I’ll try to hit the highlights:
Specific to the Automation subset of COM:
The last bullet is possibly what trips you up about thinking that you understand the difference between a COM dll and a .NET dll. They have nothing at all in common, but .NET is pretty good and inter-operating with COM servers. The Tlbimp.exe utility is quite adept at papering over the differences.