请问动态链接库和COM有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/09/23 08:24:33
在书上讲的编写动态连接口是把导出函数写好就行了,用的时候直接LoadLiary。而COM用的时候却要继承接口,用之前要先注册。好像COM也被叫做动态链接库。两个有什么区别吗??

dll与com的关系:com是一种规范,按照是com规范实现的dll可以被视为com组件,例如我们用mfc建立的Active X控件工程其中的接口封装是靠idl描述的所以可以视为com组件。而且从上面关于com和dll的说明可以看出com组件的接口是一组具有特定规范的函数,所以com组件可以别视为dll但dll不一定是com组件。
com和DLL最大的区别就是: dll是以函数集合的方式来调用的是编程语言相关的象VC必须加上extern "C"...而COM是以interface的方式提供给用户使用的是一种二进制的调用规范,是与编程语言无关的,它使用idl接口定义语言来描述自己使用类继承来实现自己的功能和方法.DLL只有DLL一种形势,里面可任意定义函数无限制,只能运行在本机上 而COM 有DLL和EXE两种存在形势: COM所在的DLL中必须导出四个函数:
dllgetobjectclass, dllregisterserver, dllunregisterserver, dllunloadnow
这四个函数各有作用,有些是提供给COM管理器用的,通过CLSID和IID来使用,有些是提供给注册机用的.

com是二进制级别的,与编程语言无关(相反你用vb\vc\delphi写的动态链接库互相调用起来会很麻烦的) ,表现形式可以是dll或者ocx.
和动态链接库是两码事,
动态链接库的表现形式也是dll.

com的很多优点正是动态链接库的缺陷.

这个....没学好...忘了...帮你翻书去!!