请教普通动态链接库和com组件有什么区别

请问普通动态链接库和com组件有什么区别?
    普通dll貌似也能其他语言程序调用吧,也是通用二进制码?还不用注册,和com组件有什么区别呢?  既然这样com又有什么优势呢?

------解决方案--------------------
个人理解,普通dll将里面的函数export,然后用的时候加上头文件和dll连接上就可以使。
com组件有一个classid,会记录在注册表中,使用的时候创建组件就可以找到这个dll的路径。其实com组件的表达能力远超普通dll。因为都是通过interface操作com的,com还支持包含和聚合,表达能力很强,差不多有源码级别的c++表达能力