【问题标题】:How to return an array of my class from a vc++ function to C#?如何将我的类的数组从 vc++ 函数返回到 C#?
【发布时间】:2016-02-12 11:42:33
【问题描述】:

如何从 IDL Dll(C++ 项目)创建和返回 MyClass 对象数组? 该 Dll 将用于 C# 项目。

//--- in idl file
[id(8)] HRESULT GetTest([out,retval] SAFEARRAY(IMYClass*)* arr_data)

//--- in .h file
STDMETHOD(GetTest)(SAFEARRAY * arr_data);

//--- in .cpp file
STDMETHODIMP CIMY_Interface::GetTest(SAFEARRAY * arr_data)
{
// Code ????
}

我的问题是应该写在GetTest函数中的代码

【问题讨论】:

    标签: c# arrays visual-c++ com idl


    【解决方案1】:

    COM 允许您来回发送编组数据类型。这些是主要的核心数据类型,例如整数、宽字符串、布尔值等,以及其他 COM 对象,如果您愿意,可以为自己的对象或数组编写编组代码。

    你想做什么,例如。通过 COM 传递您自己的对象数组实际上并不可行。这里有一些选项

    1. 将数组的字符串表示形式作为 JSON 字符串传递,可以在任一端进行编码和解码。
    2. 使用项目获取和设置方法和计数等将数组包装在 COM 对象中。这样,您的函数可以返回一个 COM 对象,然后根据要求返回项目。不过,这对于用作数组来说会很慢。
    3. 作为 VariantArray 实现

    【讨论】:

      猜你喜欢
      • 2014-06-20
      • 2016-03-23
      • 2012-06-17
      • 2020-04-07
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多