如何获取有关IDispatch COM接口故障的更多调试信息

时间:2011-11-17 03:10:51

标签: c# c++ com interop

我已经实现了一个c#IDispatch接口,以允许后期绑定到我的托管代码。它似乎在某些第三方程序调用时有效,但在其他程序中却没有。它没有进入托管代码部分输出调试信息。一些接口描述(我从c ++转换而来)很可能是不正确的,所以它没有达到代码。是否有可能确定第三方软件试图调用哪些方法?

由于

编辑:为了使问题不那么模糊,我将描述症状。我编写了一个调用IDispatch库的测试用例。它适用于第三方软件。当我在第二次运行它时,它会发出一个错误,但没有关于错误发生时它试图调用的函数的信息。界面中有大约100个函数,所以我能想到的唯一选择是尝试从一些测试代码中调用所有这些函数。这两个第三方软件都是非托管代码。

1 个答案:

答案 0 :(得分:1)

如果您怀疑问题出在C#界面中,那么也许您可以用C ++创建代理库并将其放在客户端和服务器之间。代理只是实现IDispatch并将对Invoke的所有调用转发到服务器上,它将记录所有活动。当然,这取决于你的C ++界面定义是否正确,但你似乎对此充满信心。

但在你遇到麻烦之前,请仔细检查问题是否更简单。您的描述暗示问题在客户的计算机上是明显的,而不是您自己的,因此您的服务器在该计算机上正确注册了吗?