c# - 如何获取有关 IDispatch COM 接口(interface)故障的更多调试信息

标签 c# c++ com interop

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

谢谢

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

最佳答案

如果您怀疑问题出在您的 C# 接口(interface)中,那么也许您可以在 C++ 中创建一个代理库并将其插入客户端和服务器之间。代理将只实现 IDispatch 并将所有对 Invoke 的调用转发到服务器上,并且它会记录所有事件。当然,这取决于您的 C++ 接口(interface)定义是否正确,但您似乎对此很有信心。

但在您解决这个问题之前,请仔细检查问题是否更简单。您的描述暗示问题明显出现在客户的计算机上,而不是您自己的计算机上,那么您的服务器是否已在该计算机上正确注册?

关于c# - 如何获取有关 IDispatch COM 接口(interface)故障的更多调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161643/

相关文章:

c++ - 无法读取文本文件 C++ 的内容

德尔福和COM : Is it possible to pass a TClientDataset to a COM library as a parameter?

c# - 无法附加分离的实体(具有相同键的实体已经在上下文中)

C++ 原生到中级

c# - dotpeek 显示不同版本的代码

c++ - 制作一个简单的 CLI C++ 程序所需的知识,该程序可以找到歌曲的歌词并将其显示给用户

c# - 获取com dll中的所有类

c++ - 注销 COM 的问题(高级安装程序)

c# - session 超时后自动重定向到登录

c# - 数据表与 IEnumerable<T>