What is advantage of Component object Model(COM) over DLL?

Exporting classes from a DLL cannot really be done reliably because of binary compatibility issues (different compilers, compiler versions, and compilation options can produce (slightly) different binary foot-prints for the objects of a given class). The COM is (amongst other things) a strict specification of how the binary foot-print should look like for a given COM class. This solves the binary compatibility problem. Also, COM provides means to query an unknown class for its interface, so you can import classes that are not known. There are ways to achieve the same effect without using COM and simply using DLLs, but that can easily get to be fairly complicated.

When reading a book written by Microsoft it said that you should learn wu programing along with COM because if all you learns was COM there would be massive holes in your knowledge. Just wanted to put that out there.

>>When reading a book written by Microsoft

I didn't realize that "Microsoft" could write a book, that puts "corporations are people" in a whole new perspective.

Certainly, you need to learn about programming in general, not just COM. I don't think you can use COM if you don't know how to program. Anyways, the question is about the advantages of using COM versus not doing so (with just a simple DLL).

It was a group of intelligent people from Microsoft on winprograming and the new surcurity and affects on programs in winvista... I got it from the libray. It was Windows via C/C+. I got sick of it after the first ten chapters.