2009-02-26 115 views
4

我有一个为了向第三方C#库提供COM接口而在C#中创建的DLL。我有一个使用该COM接口的C++程序,以便它可以与C#库进行通信。有时候,在C#端抛出异常,而我在C++端返回的是来自COM调用的HRESULT,它表示“发生异常”(或者出现这种情况)。有什么方法可以让我获取整个异常信息,以便我可以向C++应用程序的日志打印信息消息?如果没有,我有什么办法可以在C#端拦截所有异常,然后触发任何机制将HRESULT返回给C++,以便我可以将它们记录在C#端?如何处理由C++加载的C#DLL中的异常

回答

4

有一个托管异常到HRESULT的映射。请参阅this MSDN article中的表格。 .NET使用IErrorInfo从COM对象中检索错误信息。这也许可以反过来工作。值得一试。

+0

我在阅读你提供的链接给了我希望。你知道任何ATL类为我做了所有必要的接口查询吗,或者我将不得不自己做这件事? – rmeador 2009-02-26 20:25:36