参考文献:https://blog.csdn.net/Marcus2006/article/details/41978799

ATL实现COM组件比较简单,关键是在程序中如何调用该组件。

vs2010制作好COM组件后,会自动注册,但是vs2015却没法自动注册。

一,自动注册:

直接从MFC Typelib中导入该组件,导入相应接口,就可以了。

二、非自动注册:

方法一:

只需要两个文件:.tlb文件和.dll文件。

1.导入.tlb文件和.dll文件;

首先将.tlb文件的目录添加到VC++目录-库目录内,将.dll文件放在当前可执行文件目录内。

#import "xx.tlb" no_namespace

#import "xx.dll" no_namespace  (一般将这两句话放在stdafx.h文件中)

添加no_namespace的目的是程序会自动为该COM组件添加命名空间xxLib(其中xx为COM工程名称,添加后就不使用命名空间了。

如果不添加no_namespace,就添加一句using namespace xxLib;

2.编译一下调用程序。

3.注册DLL(参考使用MFC生成COM组件)

用LoadLibrary()获得dll文件句柄,然后获取DllRegister函数进行注册,不多说。

4.调用CoCreateInstance()函数

其中GUID值通过__uuidof(class/interface)获取,原因见后面三。

方法二(不推荐):

1.在COM组件中找到xx_i.h文件和xx_i.c文件,并导入

#include "xx_i.h"

#include "xx_i.c"

2.注册,不多说

3.调用CoCreateInstance()函数

其中的guid值,直接包含在xx_i.c文件中,直接使用。

即,CLSID_XX和IID_IXX

三、tlb文件的关键作用

我们在第一步导入tlb文件,第二步编译一下调用程序,实际上是让编译器将xx.tlb文件编译成两个文件,xx.tli文件和xx.tlh文件。

xx.tlh文件:该文件包含了COM组件所有接口,类和它们的GUID值。

xx.tli文件:该文件包含了组件类的方法声明。

看到没,只有首先生成了这两个文件,才能获取类和接口的GUID值。

__uuidof(classname/interfacename),该函数的参数是COM类名或接口名称,通过该函数就可以获取相应接口和类的GUID值。

最新文章

  1. 2.5美元每月的VPS, host1plus
  2. U-boot的目录结构及spl功能
  3. Cordova 打包 Android release app 过程详解
  4. 分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署
  5. ifconfig 工具
  6. linux修改mac地址
  7. CQRS学习——最小单元的Cqrs(CommandEvent)[其一]
  8. 【BZOJ】1006: [HNOI2008]神奇的国度 弦图消除完美序列问题
  9. Linux堆内存管理深入分析--阿里聚安全
  10. web前端-html学习笔记
  11. 全新的ASP.NET !
  12. c#中的jQuery——HtmlAgilityPack
  13. SOCKET 编程TCP/IP、UDP
  14. 获取网络图片并显示在picturbox上,byte[]数组转换成Image:
  15. centos6.5磁盘扩容
  16. Tessaract 源码分析(转)
  17. 数组的typedef 和函数的typedef
  18. oracle-锁概念
  19. C# Process获取当前进程信息
  20. 解决Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK的问题

热门文章

  1. DM8168 自己主动登录root用户
  2. getMeasuredHeight(),getScrollY(),getHeight()的区别和联系
  3. ios -富文本和尺寸
  4. 洛谷P2296 寻找道路==codevs3731 寻找道路
  5. zookeeper(二): Curator vs zkClient
  6. Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
  7. LeetCode:移动零【283】
  8. 3.25课·········JavaScript的DOM操作
  9. Python——轻量级web服务器flask的学习
  10. ios中文模糊搜索兼容问题