c# - 如何从 C# 返回集合对象并在 C++ 中访问它们?

标签 c# c++ com

我曾尝试从 C# 返回对象集合并通过 COM 使用 C++ 访问它们但失败了。我已尝试全部列出 ArrayList 和 IDictionary 但失败了。

我试过了

How to return a collection of strings from C# to C++ via COM interop也没有成功。

谁能帮帮我

最佳答案

@Partial,你提出了一个重要的观点。您不能将 .NET“对象”传回 C++(除非它是托管 C++),因为 .NET 对象语义与 C++ 对象语义不同。

@Cute:但是,您可以传递 COM 接口(interface)指针。如果您需要“传统 C++”代码与 .NET 对象对话,请使用 COM 接口(interface),而不是对象。

确保您的对象被标记为 COM 对象,并且您实现了一个合适的接口(interface),其中包含您的 C++ 所需的方法。然后,将接口(interface)引用数组传回 C++ 代码。 C++ 代码应该获得 COM 接口(interface)指针的 SafeArray,它可以使用通常的 COM 语义(AddRef() 等)对其进行操作。

关于c# - 如何从 C# 返回集合对象并在 C++ 中访问它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054406/

相关文章:

c# - 如何将 Java 列表 XML 导入 C#

c# - 读取系统音频输出流

c++ - VS2003 添加 "additional incl. dirs"后也找不到.h文件

c# - 来自 native 应用程序的 CoCreateInstance C# COM 组件找不到引用

com - CoCreateInstance 的具体功能是什么?

c# - 什么是 C# 等同于 C++ 句柄

c# - 删除 DateTime.UctNow.TimeOfDay 的毫秒部分的最简单方法是什么?

c# - Windows 64 位地址空间

c++ - 为什么不调用虚函数?

c# - "standard"初始化基于 COM 的库的方法是什么