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.
Com is a binary standard that allows applications to utilize binary modules interchangeable any language can produce com complaint library's as long as they meet the com standard. So what the diffidence is depends some com library's will be native machine code some may be manged and running through an interpreter. What com is really meant to do is bridge the usability gap between the oop style that c++ had at the source level to the prebuilt binary world.
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.