我有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++方法? –