我的 C++ 代码有这样一个参数:
STDMETHODIMP TVinaImpl::test(BSTR Param1)
{
try
{
Param1=(L"test1");
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IVina);
}
return S_OK;
}
我使用 C++ 生成器:
当我在 c# 中调用此 com dll 函数时,它显示错误:
IntPtr a = new IntPtr();
vina.test(a);
为null,没有获取到值。
如何将变量从 C# 传递到 C++ com 并将其传回?
最佳答案
由于 Param1
被声明为 [in, out]
参数,您需要将其声明为指向 BSTR 的指针:STDMETHODIMP TVinaImpl::test (BSTR* 参数 1)
此外,您不能简单地将字符串文字分配给 BSTR。正确的方法是使用 SysAllocString
分配内存:*Param1 = SysAllocString(L"test1");
关于c# - 如何将字符串参数从 C++ com 传递给 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545171/