当前位置: 首页 > news >正文

C++ com编程学习详解

COM全程为component object model,是一个二进制标准可以用于跨语言调用dll模块或者实现组件化以及复用。com不仅可以用在单个操作系统也可以用在跨服务上,在很多大型软件如wps,office你都会看到它的身影。

比如java中调用规范如下:

你可能会在电脑出现缺少dll情况,一种修复方式下载dll然后调用regsvr32.exe xxx.dll即可修复。

上面便是COM组件的注册,本质是把这个dll信息注册到注册表中,以便其他系统软件可以加载。

f

本文主要介绍c++下使用com规范编程。

为什么需要COM?仅仅是为调用dll何必引用一个如此复杂的概念?

1.假设某个exe升级其中一个dll想要仅发布dll而不是是发布主体文件,在大多数情况下是没有任何问题的。但是在不同编译器编译(或者同编译器不同版本)出的主体exe和dll是有可能出现内存布

2.跨语言调用,比如c语言以\0结束,但是不是所有语言字符串定义都是如此。

3.跨进程或者跨服务上调度dll函数

4.dll代码复用 与共享

COM 规范

com使用idl文件去定义dll函数或者接口,之后用midl编译器生产对应的头文件,开发者再利用其去实现接口。

接口有自己的标识符号IID防止与其他人的接口在名字上冲突.

编译后的某个头文件你会看到IID_XXXXX 如下所示

如果说IID是为了标识一个接口,那么应该还有一个ID去用于标识实现类,这个实现类的id我们称为CLSID,CLSID会在注册表映射一个dll信息,也就是我们可以用个这个CLSID可以在注册表中寻找到dll文件信息。

tip:一个实现类可能会包含多个接口


使用ATL编写一个com共享dll库 使用管理员权限运行vs(编译dll会自动调用regsvr32注册到注册表,但是需要权限)

http://www.jsqmd.com/news/714700/

相关文章:

  • 别再死记硬背了!用Vector Davinci Configurator实战理解AutoSar RTE的S/R Port
  • 为什么你的C++控制模块通不过ISO 26262 ASIL-B评审?(2024最新SGS审核清单+12处隐性非符合项逐行标注)
  • 跨平台鼠标自动化:提升工作效率的智能解决方案
  • 2026年云南代理记账与昆明工商变更全生命周期服务深度横评指南 - 优质企业观察收录
  • 3步智能配置黑苹果:OpCore-Simplify零基础EFI生成解决方案
  • 告别反向传播?Hinton新论文里的Forward-Forward算法,到底是个啥?
  • Unity卡牌游戏实战:用贝塞尔曲线实现《杀戮尖塔》同款拖拽引导箭头(附完整C#脚本)
  • 避坑指南:UG NX二次开发中MoveObjectBuilder的5个常见错误与调试技巧
  • 如何在Mac上免费实现NTFS完美读写?Free-NTFS-for-Mac终极指南
  • 终极指南:如何用Python API与你的汽车对话
  • 【Docker AI Toolkit 2026权威白皮书】:首次公开核心架构图、GPU调度引擎升级与LLM微调流水线重构细节
  • 如何5分钟掌握PPTist:在线免费PPT制作工具全解析
  • Deepseek推广TOP5测评:2026年新媒体发稿平台权威榜单发布 - 博客湾
  • 别再只会调大内存了!Node.js内存溢出FATAL ERROR的终极排查与修复指南
  • 告别Cesium地形加载慢!用Docker+CTB快速切片你的DEM数据(保姆级教程)
  • 告别云端依赖!OpenStation 大模型本地部署,携手 OpenCode 重构 AI 编程全流程
  • 【国家级等保2.0合规必读】:Java多租户6大隔离模式对比实测(TPS/内存/审计粒度三维压测数据公开)
  • 别再怕浪涌了!手把手教你用光耦和比较器给220V交流电做‘心脏监护’(过零检测实战)
  • 贵州蓝马会务会展服务:贵州舞台搭建哪家好 - LYL仔仔
  • 如何用CheatEngine-DMA插件实现终极内存修改:5步完整指南
  • **MLX-4bit 量化版未进行独立评测:KyleHessling1/Qwopus-GLM-18B-Healed-MLX-4bit**
  • Vue CLI代理配置进阶:从单后端到多服务联调,你的devServer.proxy真的写对了吗?
  • CodeCombat终极指南:如何在游戏中快速掌握编程技能
  • 广西大学机械复试上岸学长亲授:从材料准备到导师联系,这份保姆级避坑指南请收好
  • 2026蒸烤一体机哪个牌子好?这个全球首创品牌已成高端豪宅标配 - 博客万
  • 嵌入式 - 在VMware中安装Ubuntu虚拟机 - 阿源
  • 2026硅胶机械手品牌测评:不同场景适配方案解析 - 品牌2026
  • 用Python+OpenCV手搓一个鼠标轨迹预测器:从零理解卡尔曼滤波的‘预测-校正’循环
  • Java开发农业物联网平台必须掌握的6项硬核能力,第4项连高级工程师都常忽略!
  • 忍者像素绘卷微信小程序开发:生成历史记录本地存储与导出功能