C++编写COM组件 ATL工程
最近在做QT项目中遇到一个问题,在Qt中调用MFC编写的动态库,出现内存泄露,没找到原因。由于这些库年代久远,内部代码也比较复杂,又不能轻易丢弃。于是我想把它们做成COM组件再试试。以下是一个简单COM组件编写和调用的完整流程,VS2015。
1. 新建一个ATL项目
工程建好后,会自动生成两个 项目,只需要关注第一个就可以了。
2. 添加自定义接口对象, MFCComObject ATL简单对象
项目中添加了 CMFCComObject 类和 IMFCComObject 接口。只需要在IMFCComObject接口中添加方法,并实现自定义功能。
3. 添加自定义方法 DoSomething
找到添加的DoSomething方法,加上方法实现。编译后生成对应的dll文件
编译后,VC自动完成了COM组件注册,也可以手动调用 regsvr32.exe进行注册。至此,COM组件已经编写完成。
接下来就可以调用MFCComObject的DoSomething方法了。新建一个控制台程序,导入MFCCom.dll文件
直接编译一下,会生成相应的MFCCOM.tlh和MFCCom.tli文件,打开文件可以看到IMFCComObject接口的定义
然后添加DoSomething方法的调用代码
编译运行即可
C++编写COM组件 ATL工程相关推荐
- VS2012创建ATL工程及使用MFC测试COM组件
VS2012创建ATL工程及使用MFC测试COM组件 原创 2015年01月22日 16:23:21
- VS2010创建ATL工程及使用C++测试COM组件
VS2010创建ATL工程及使用C++测试COM组件 1.创建ATL项目,取名MyCom 2. ATL 项目向导,勾选 [支持COM+ 1.0]和[支持部件注册器],其他默认,点击完成. 3.在该项目 ...
- C++基于ATL工程编写ActiveX控件
开发环境:VS2010 开发工程:C++ATL项目 开发目的:创建ActiveX实现js调用 步骤: 1. 创建一个ATL工程 应用程序类型选择动态链接库(DLL),勾选支持COM+1.0, ...
- React学习(三):通过 React 编写名片组件(React属性)
阿里云服务器0元试用,首购低至0.9元/月起 [开发云]年年都是折扣价,不用四处薅羊毛 前置内容阅读 React学习(二):编写 React 组件并成功挂载 效果预览: 1. 启动 my-projec ...
- 编写react组件_React组件的“黄金法则”如何帮助您编写更好的代码
编写react组件 以及钩子如何发挥作用 (And how hooks come into play) Recently I've adopted a new philosophy that chan ...
- 用vue优雅地编写UI组件的几条指导原则
前言 最近在尝试写几个UI组件,并通过阅读element-ui的源码,与其反复比较,然后认真思考,最后总结出一些自己的一些心得和体会.在造轮子的过程中,既巩固了html,css,js基础,又加深了对v ...
- DELPHI怎样编写COM组件
元旦闲来无事,学习一下DELPHI怎样编写COM组件.结果一试才发现问题多多,要么是找不到接口,要么是找不到方法.查了很多资料,发现说的都不清楚.现在把我所学到的和大家分享一下,希望新学的人能少走弯路 ...
- vue 如何生成一个dom元素_通过一个简单的示例学习如何编写Vue组件
大家好,本篇文章我将带着大家一起学习如何编写自定义组件(Components),通过「vue基础」新手快速入门篇(一)这篇文章的学习,我们知道了 Vue 设计的目的就是为了方便我们创建基于组件UI的项 ...
- 编写react组件_s! 这就是为什么ReasonReact是编写React的最佳方法的原因
编写react组件 Are you using React to build user interfaces? Well, I am too. And now, you'll learn why yo ...
- 编写react组件_如何编写第一个React.js组件
编写react组件 React的函数和类组件,道具,状态和事件处理程序 (React's function and class components, props, state, and event ...
最新文章
- opencv python 多帧降噪算法_防抖技术 | OpenCV实现视频稳流
- [WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]
- 如何优雅的研究 RGSS3 (七) 加入LOGO屏幕
- 在C盘和D盘执行php 结果不同,window_双系统电脑给C盘扩容后导致D盘Win10引导项丢失该怎么办?,为了写个经验,特意把C盘用无 - phpStudy...
- python连接kafka-python连接kafka生产者,消费者脚本
- switch使用中遇到的问题
- 第三十一期:世界上有四类人永远不可能成为编程界牛人(个人见解,欢迎补充)
- AnalyticDB for PG 如何作为数据源对接帆软 FineBI
- java entity转dto_java 使用反射在dto和entity 实体类之间进行转换
- 【算法分析与设计】习题分享
- protobuf反射详解
- 由中缀式转化为后缀式
- 学习笔记(3):SAP S4 HANA财务模块入门到精通-供应商自动付款的操作-Fiori
- 使用playsound播放音频(python)
- 使用开源文档工具docsify,用写博客的姿势写文档
- 币小秘:如何才能减少被套,降低风险!
- redis服务之主从复制、哨兵模式、群集模式
- (学习笔记)JAVA开发需要掌握哪些技术?
- SIPP测试使用指导
- Qlikview配置ODBC连接SQL SERVER/ORACLE
热门文章
- ubuntu 16.04安装显卡驱动
- 【转】OC门与线与逻辑(含逻辑图)
- 深入浅出SCSI子系统(六)SCSI 磁盘驱动
- 史上最详细Oracle 10g安装教程
- android onenote字体,【完美解决】OneNote中英文字体不统一,微软10多年未解决的Bug!...
- mapgis矢量化怎么打分数_MapGIS67操作手册(3-12)MapGIS67矢量化的基本流程
- java 计算器 junit测试_Java—Junit单元测试
- rubyinstaller官网无法访问的解决办法
- devexpress gridview属性详细(全部属性以及常用属性)
- android dmp文件解析,用minidump_stackwalk分析dmp文件失败