使用 COM 方式来创造对象
- 简单的 dll, 创建 C++ 对象,导出函数创建对象,返回对象接口指针,此对象不支持引用计数
- C++ 类继承 IUnknown,支持引用计数和查询接口,导出函数创建对象,返回对象接口指针
- 完整的 COM 方式实现,实现类厂,实现引用计数和查询接口,返回类厂,通过类厂返回对象接口指针
-
如果是细粒度的对象,采用 C++ 源文件实现,直接编译进去
-
如果是粗粒度的对象,对应的是一个模块实现,且模块可能是一个单件,采用导出函数创建对象 COM 方式跨语言,数据类型必须通用,不可能采用 std::string 这样的类型,同样不同 vc 版本,也不能共用 std::string 这样的类型,只能采用简单类型,比如 char*, wchar_t*
-
组件不能返回std::& 这样的参数,也不能返回std::** 这样的参数,不自持跨 vc 版本调用,遍历时,只能返回组件内部集合的总大小,然后再客户端通过 for 循环遍历,在循环中调用组件函数获取单条数据
-
可传递客户端接口指针到组件调用函数,必要时回调接口填充数据
COM 编程有一定的套路,声明接口,实现接口,实现引用计数,实现类厂
调用方使用智能指针