将字符串从 C# 方法返回到输出参数中的C++函数



我正在从C++函数调用C#方法。

C# 方法应执行以下操作:

  • 分配BSTR并将其返回到输出参数中的C++函数
  • 通过堆栈向C++函数返回HRESULT(通过返回值)

我按如下方式实现了 C# 方法:

int Method(out IntPtr output)
{
    int status = 0;
    ...
    output = Marshal.StringToBSTR(someString);
    ...
    return status;
}

问题:

  • 我应该在 C++ 中使用什么变体类型,它对应于 C# 中的out IntPtr类型?
  • C# 中是否有其他类型可供我改用,以便返回BSTR
  • 如果是,那么它是什么 C# 类型,对应的C++变体类型是什么?

我已经尝试了此处列出的几种变体类型,但似乎都不起作用。

您正在使用 COM 可调用包装器来回答您的问题:

  1. C# out IntPtr映射到 COM 数据类型中的void**

  2. 默认情况下,C# 字符串类型在
  3. COM 中封送为 BSTR 类型,请检查字符串的默认封送处理,以便您可以在 C# 中使用字符串

  4. BSTR 的变体类型是VT_BSTR,但如果只处理字符串,则可以只处理 BSTR,不需要使用变体类型。

相关内容

  • 没有找到相关文章

最新更新