Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

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 编程有一定的套路,声明接口,实现接口,实现引用计数,实现类厂

调用方使用智能指针

Morty Proxy This is a proxified and sanitized view of the page, visit original site.