C++编写COM组件 ATL工程

最近在做QT项目中遇到一个问题,在Qt中调用MFC编写的动态库,出现内存泄露,没找到原因。由于这些库年代久远,内部代码也比较复杂,又不能轻易丢弃。于是我想把它们做成COM组件再试试。以下是一个简单COM组件编写和调用的完整流程,VS2015。

1. 新建一个ATL项目

C++编写COM组件 ATL工程_第1张图片

C++编写COM组件 ATL工程_第2张图片 C++编写COM组件 ATL工程_第3张图片

工程建好后,会自动生成两个 项目,只需要关注第一个就可以了。

2. 添加自定义接口对象, MFCComObject ATL简单对象

C++编写COM组件 ATL工程_第4张图片C++编写COM组件 ATL工程_第5张图片

C++编写COM组件 ATL工程_第6张图片 

C++编写COM组件 ATL工程_第7张图片 

项目中添加了 CMFCComObject 类和 IMFCComObject 接口。只需要在IMFCComObject接口中添加方法,并实现自定义功能。

3. 添加自定义方法 DoSomething

C++编写COM组件 ATL工程_第8张图片

C++编写COM组件 ATL工程_第9张图片 

C++编写COM组件 ATL工程_第10张图片 

找到添加的DoSomething方法,加上方法实现。编译后生成对应的dll文件

C++编写COM组件 ATL工程_第11张图片 

编译后,VC自动完成了COM组件注册,也可以手动调用 regsvr32.exe进行注册。至此,COM组件已经编写完成。

接下来就可以调用MFCComObject的DoSomething方法了。新建一个控制台程序,导入MFCCom.dll文件

C++编写COM组件 ATL工程_第12张图片 

直接编译一下,会生成相应的MFCCOM.tlh和MFCCom.tli文件,打开文件可以看到IMFCComObject接口的定义

C++编写COM组件 ATL工程_第13张图片 

然后添加DoSomething方法的调用代码

C++编写COM组件 ATL工程_第14张图片 

编译运行即可

C++编写COM组件 ATL工程_第15张图片 

 

 

你可能感兴趣的:(Windows编程,windows,c++)