【发布时间】:2015-01-21 17:45:12
【问题描述】:
我正在从 C++ 函数调用 C# 方法。
C# 方法应该执行以下操作:
- 分配一个
BSTR并在输出参数中将其返回给 C++ 函数 - 通过堆栈将
HRESULT返回给C++函数(通过返回值)
我已经实现了如下的C#方法:
int Method(out IntPtr output)
{
int status = 0;
...
output = Marshal.StringToBSTR(someString);
...
return status;
}
问题:
- 我应该在 C++ 中使用什么变体类型,它对应于 C# 中的
out IntPtr类型? - 为了返回
BSTR,我应该使用 C# 中的其他类型吗? - 如果是,那么它是什么 C# 类型,对应的 C++ 变体类型是什么?
我尝试了here 列出的几种变体类型,但它们似乎都不起作用。
【问题讨论】:
-
C++ 代码是否使用 C# DLL 作为 COM 组件?还是您正在编写 C++/CLI?
-
@Matt:第一个选项。
标签: c# c++ marshalling com-interop variant