我使用IMB WMQ库连接到队列管理器。
这是我用了很长时间的代码,它是由VS2005的朋友创建的,我更新后用于VS2010。当我使用与LoadRunner工具集成来运行一些性能脚本时,它工作正常。但是,当我尝试调试它时返回以下错误:
{"Unable to load DLL '**amqxcs2.dll**': The handle is invalid. (Exception from HRESULT: 0x80070006 (E_HANDLE))"}
这与调试外部DLL有关,但我没有找到解决方法。
我使用以下命令将dll注册到GAC:
gacutil /I "C:\Program Files\IBM\WebSphere MQ\bin\amqmdnet.dll"
当我尝试添加amqxcs2.dll时,它会返回错误:
gacutil /I "C:\Program Files\IBM\WebSphere MQ\bin\amqxcs2.dll"
Failure adding assembly to the cache: The module was expected
to contain an assembly manifest.
我在Windows Server 2003上运行VS2010 Ultimate。
在Loadrunner中运行代码时,我能够从队列中输入和获取消息,但我无法调试。
有一个similar post here,但它没有解决方案。
答案 0 :(得分:0)
为什么你认为“确保库是应用程序需要它的位置”不是解决方案?
您需要在您计划使用的机器上正确安装您正在使用的任何产品,或者通过手工复制必要的文件到正确的位置来欺骗您的方式(并手动计算“正确的位置”)。{{3工具可能有助于跟踪应用程序尝试使用的文件。
答案 1 :(得分:0)
这可能是COM错误。 IBM程序集可能是本机DLL,因此您无法在GAC中注册它,仅适用于.NET dll。可以使用Regsvr32注册本机COM dll。如果本机dll依赖于另一个缺少的dll,也会发生此错误。另请参阅Understanding Dependencies of a Visual C++ Application,其中提供了有关可用于确定本机dll的依赖关系的Dependency Walker工具的信息。