我对这个问题的含糊性表示歉意。如何解决COM组件问题?
在将应用程序迁移到新服务器环境的过程中,为应用程序公开API的COM组件(.dll)文件已停止工作。
有没有什么办法可以排除COM组件的故障?是否有COM组件记录错误的标准方式(Windows事件查看器中没有事件)?我能以任何方式“检查”一个组件吗?
我已经成功地使用regsvr32.exe注册了组件(除了创建一些Windows注册设置之外,我不知道这实际上做了什么)。
Martijn
我对这个问题的含糊性表示歉意。如何解决COM组件问题?
在将应用程序迁移到新服务器环境的过程中,为应用程序公开API的COM组件(.dll)文件已停止工作。
有没有什么办法可以排除COM组件的故障?是否有COM组件记录错误的标准方式(Windows事件查看器中没有事件)?我能以任何方式“检查”一个组件吗?
我已经成功地使用regsvr32.exe注册了组件(除了创建一些Windows注册设置之外,我不知道这实际上做了什么)。
Martijn
这种形式的故障诊断有2个部分。
首先使用SYS内部的procmon。 SYS internals这显示了尝试打开COM服务器的进程的strace样行为。
查看失败的函数调用。
接下来我会尝试直接在调试器中加载COM控件,看不到任何故障有
为从procmon结果将显示在注册表中的位置和文件位置其中的关键是加载COM对象。
失败可能是: -
prog.exe
转到64位,它将无法加载32位com DLL您可以在调试器中加载任何DLL。调试符号使它更容易,但我们试图发现错误,它在调用中的例外
谢谢!通过'试图打开COM服务器',你的意思是客户端连接到.dll,因为它在哪里?调试控件是否需要COM组件的调试版本,或者该术语在此不适用?我必须承认,我几乎不了解COM。 –
非常感谢您的详细解答。 –
它是您写的COM组件还是您使用的COM组件? – Bruce
@Bruce谢谢你的回复。这是一个由第三方编写的COM组件,不幸的是它不能提供帮助。两种环境都(看起来)是相同的。 –