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的很多优点正是动态链接库的缺陷.
这个....没学好...忘了...帮你翻书去!!