我有C++代码,有这样的参数:如何将字符串参数从C++ com传递给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++ Builder的:
当我打电话在C#这个COM DLL功能它显示我的错误:
IntPtr a = new IntPtr();
vina.test(a);
它为空并且没有得到该值。
如何将C#中的变量传递给C++ com并传回?
如果有什么方法可以避免在C++中使用SysAllocString? –
不幸的是,这是不可能的。 BSTR由COM管理,并且始终需要从其内存分配器中分配。如果不需要自动化兼容性,则可以考虑使用简单的'wchar_t *'代替。 – Aurora
有什么办法在客户端(例如在C#中)分配内存并通过引用传递参数给C++方法? –