Com与dll

来源:互联网 发布:单机小游戏 知乎 编辑:程序博客网 时间:2024/05/09 19:16

1.动态链接库与静态链接库的区别。

   1.1 静态链接库作为代码的一部分,在编译时被链接。

        1.2 动态链接库有两种使用方式:

  一种是静态加载,即在应用程序启动时被加载;一种是动态加载,即是该动态链接库在被使用时才被应用程序加载。

2.动态链接库和COM组件的区别

     2.1 动态链接库的表现形式只能是dll[变态该名的除外], COM组件的表现形式可以是dll也可以是exe。 注:其实字体、驱动等也算是动态链接库的一种,这里略去...

     2.2 动态链接库的生成和编译器及系统相关,在Windows/Linux下系统,需要分别编译才能使用。

          COM组件是二进制编码,在Windows和Linux下可以直接使用,不需要重新编译。

     2.3 COM组件是按照COM规范实现的dll或者exe;动态链接库是一个可以导出函数的函数集合

     2.4 动态链接库只能在本机被调用,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来使用,有些是提供给注册机用的.

原创粉丝点击