当前位置:主页   - 电脑 - 程序设计 - C/C++
COM原理与应用----COM的实现
来源:网络   作者:   更新时间:2012-02-28
收藏此页】    【字号    】    【打印】    【关闭

  1、COM的实现与操作系统平台密切相关

  因为COM最初源于Microsoft Windows平台,所以COM实现部分(即COM库)很多地方直接用到了Windows系统的一些特性,比如系统注册表、动态连接库等等,但实际上 COM是一个与平台无关的组件软件模型。Windows上使用的COM标准只是COM的一个具体实现。

  2、COM的实现方法

  进程内组件(DLL ,in-process component)。

  进程外组件(EXE ,out –of-process component)。

  3、DLL程序的创建方法

  (1)创建一个DLL工程

  (2)创建DLL时,应该使用_stdcall调用习惯引出函数,并使用extern “C”说明符。这样能够保证与其他编译器和编程语言的兼容。

  (3)按照传统的编程方法,编写一个DEF文件,用来描述DLL程序的模块信息,即列出所有引出函数,并给每个引出函数分配一个唯一的序号。在Win32平台上,可以不使用DEF文件,而直接在函数说明时使用_declspec(dllexport)说明符,如下:

  extern “C” _declspec(dllexport) int _stdcall MyFunction();

  4、客户程序操作DLL程序的三个系统函数

  LoadLibrary,装载DLL模块函数

  GetProcAddess,取引出函数地址的函数

  FreeLibrary,释放DLL程序的函数

  5、DLL的三点说明

  (1)对于进程内组件,因为客户程序与DLL程序在同一个地址空间,所以,DLL程序不仅可以引出函数,也可以引出全局变量。

  (2)VC++提供了使用工具DumpBin,通过/EXPORTS选项可以列出DLL程序中的所有被引出的信息。(实际运行中需要LINK.EXE和MSPDB60.DLL的支持)

  (3)如果客户程序本身也是一个DLL程序,,则它一定要先被装入到进程空间中。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明