c++ - COM 自动化结构与它们的包装器

标签 c++ com atl safearray

我正在为 Windows API 开发一个 COM 包装器,它可以从那些没有原生 Windows API 支持的脚本语言中使用。所以我在考虑我应该在COM ATL项目中使用什么。 SAFEARRAY 还是 CComSafeArrayVARIANT 还是 CComVariant?或者任何其他结构或适当的包装器?

我使用这两种类型进行了测试,但在它们之间没有发现任何特殊的性能差异、使用问题或其他实现。

哪个最适合用于 COM ATL 项目?例如,SAFEARRAYCComSafeArray

最佳答案

接口(interface)和组件类必须使用SAFEARRAYVARIANT。您不能拥有在其任何 COM 公共(public)方法签名或属性中使用 CComSafeArrayCComVariant 的 COM 接口(interface)或对象。但是,您可以在 coclass 实现中使用 CComSafeArrayCComVariant

关于c++ - COM 自动化结构与它们的包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307977/

相关文章:

.net - 从 PHP 页面调用 .net 函数

python - 如何通过 Python 使用 COM INetCfg 对象?

windows - regsvr32 在当前文件夹中找不到dll

c++ - 将模型绑定(bind)到 Qt TableView

c++ - gdb 在简单程序中报告错误值。为什么?

android - 了解 ImageProcessing 代码

com - 如何从 ATL activex 控件向 VB6 返回错误字符串和错误代码?

c++ - SDL窗口打开后关闭

c++ - CComPtr CoCreateInstance 返回 0x80070582(类已存在。)

c++ - 如何使用 CAtlComModule 实现 COM 事件接收器?