本文示例源代码或素材下载
目录
一个简单的 ATL COM 服务器
创建一个 COM 客户端
使用 Tlbimp 转换 COM DLL
编写一个托管客户端
封送一个结构和一个字符串
在托管代码中使用 P/Invoke
使用接口调用托管代码
调试托管代码和非托管代码
总结
COM 是一种很出色的技术。正是由于公共语言运行库 (CLR) 能够使 Microsoft® .NET 应用程序和非托管 COM 组件之间进行无缝交互,才使得 CLR 成为极其强大的平台。但是我在网络上进行搜索时,几乎找不到能够说明 COM Interop 的最基本概念的有用示例。本专栏的目的是讲解这些基本概念,并提供切实有用的示例,帮助这一技术领域的用户快速入门。
我将以一个简单的活动模板库 (ATL) COM 服务器开始介绍,使用一个非托管 COM 客户端对该服务器尝试不同的访问方法,然后使用托管客户端进行相同的操作。我将逐一介绍各个 DLL,说明从非托管到托管的转换,并且还将说明如何使用 P/Invoke 在非托管 DLL 中访问导出的方法。本文中最难的部分是理解复杂结构的封送,在本专栏中将不对这一点进行详尽的介绍。仅介绍这一知识点就需要开辟一个完整的专栏或写一本书。我将为您展示非托管代码如何使用接口来回调托管代码。(您也可以使用委托达到这一目的,但本专栏不介绍这种方法。)
最后,我将介绍使用公共符号对您的 COM Interop 项目进行调试。这部分将对 WinDbg.exe、非托管调试和使用 SOS 进行的托管调试进行最基本的介绍。我将演示在托管代码中调用非托管代码或在非托管代码中调用托管代码时堆栈的情况。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!