1

我有一个用 C# 编写的 COM 对象。throw new Exception("error message")在某些情况下,如果 COM 对象遇到错误(例如),它可能会抛出带有描述性消息的异常。

从 VB6 代码和 C++ 代码调用此 COM 对象。

从 VB6 代码中,我可以使用Err.Message.

在 C++ 中,我得到了 System.Exception 文档中指定的 HRESULT 0x80131500。

一旦我在 C++ 中获得了这个 HRESULT,我怎样才能得到 Exception () 的错误消息,就像在 VB6 中Exception.Message返回的消息一样?Err.Message

我在网上搜索并找到了一些使用FormatMessageand的示例_com_error,但这些都没有返回我想要的消息。

4

1 回答 1

2

更新。

尝试使用接口QueryInterface的失败对象ISupportErrorInfo,然后调用InterfaceSupportsErrorInfo带有REFIID抛出异常的接口的方法。如果返回S_OK,则只需调用GetErrorInfo函数即可获取IErrorInfo接口。然后使用GetDescription方法。

于 2014-01-20T17:28:26.110 回答