C#中的COM异常

Yar*_*veh 1 .net c# com interop exception

我正在使用c#代码中的cpp COM对象.我的c#代码如下所示:

try
{
   var res = myComServer.GetSomething();
}
catch (Exception e) { }
Run Code Online (Sandbox Code Playgroud)

但是,异常永远不会包含我在cpp中设置的任何细节,特别是我的错误消息.

在我的cpp方面,我已经按照我在网上找到的几个例子:

...
ICreateErrorInfo *pcerrinfo;    
IErrorInfo *perrinfo;    
HRESULT hr;    
hr = CreateErrorInfo(&pcerrinfo);    
pcerrinfo->SetDescription(L"C++ Exception");    
hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);  
if (SUCCEEDED(hr))    
{  
  SetErrorInfo(0, perrinfo);  
  perrinfo->Release();    
}  

pcerrinfo->Release();    
return E_FAIL;  // E_FAIL or other appropriate failure code  
...
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?还有什么可以影响这个,比如编组,互操作创建或com服务器本身的属性?

Rem*_*anu 6

您的COM类是否支持ISupportErrorInfo