私はC#コードからcpp COMオブジェクトを消費しています。例外は私のエラーメッセージ、特に、私はCPPに設定された内容のいずれかが含まれていませんしかしC#のCOM例外:
try
{
var res = myComServer.GetSomething();
}
catch (Exception e) { }
: 私のC#のコードは次のようになります。
私は、ウェブ上で発見したいくつかの例を踏襲している私の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
...
私は何も足りませんか? マーシャリング、相互運用機能の作成、またはcomサーバー自体の属性など、これに影響する可能性のあるものは他にありますか?代わりに、例外の種類を引くの
+1これは興味深い推測です。私は、Webの中の例が細部にどのように焦点を当てるのか、そしてあなたがISupportErrorInfoであなたのクラスをマークする必要があると言及するのを怠るかも知れません。 –