首页 / 软件开发 / C++ / COM原理与应用----COM的实现
COM原理与应用----COM的实现2011-04-041、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程序,,则它一定要先被装入到进程空间中。6、进程外组件与客户通信跨跃进程边界协同工作(1)两个问题一个进程如何调用另一个进程中的函数。参数如何从一个进程被传递到另一个进程中。(2)Windows平台上不同进程间通信的方法动态数据交换(DDE)命名管道(named pipe)共享内存