Skip to content

Files

Latest commit

6634aa0 · Sep 30, 2016

History

History

com_examples

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Sep 30, 2016
Sep 30, 2016
Sep 30, 2016
Sep 30, 2016

com_examples

使用 COM 方式来创造对象

  1. 简单的 dll, 创建 C++ 对象,导出函数创建对象,返回对象接口指针,此对象不支持引用计数
  2. C++ 类继承 IUnknown,支持引用计数和查询接口,导出函数创建对象,返回对象接口指针
  3. 完整的 COM 方式实现,实现类厂,实现引用计数和查询接口,返回类厂,通过类厂返回对象接口指针
  • 如果是细粒度的对象,采用 C++ 源文件实现,直接编译进去

  • 如果是粗粒度的对象,对应的是一个模块实现,且模块可能是一个单件,采用导出函数创建对象 COM 方式跨语言,数据类型必须通用,不可能采用 std::string 这样的类型,同样不同 vc 版本,也不能共用 std::string 这样的类型,只能采用简单类型,比如 char*, wchar_t*

  • 组件不能返回std::& 这样的参数,也不能返回std::** 这样的参数,不自持跨 vc 版本调用,遍历时,只能返回组件内部集合的总大小,然后再客户端通过 for 循环遍历,在循环中调用组件函数获取单条数据

  • 可传递客户端接口指针到组件调用函数,必要时回调接口填充数据

COM 编程有一定的套路,声明接口,实现接口,实现引用计数,实现类厂

调用方使用智能指针