2009-02-26 116 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