2012-04-13 55 views
1

我正在使用IMB WMQ库连接到队列管理器。试图调试使用IBM WMQ(amqmdnet.dll)的VS2010 C#代码

这是我使用了很长时间的代码,它是由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. 

我已经VS2010旗舰版上运行Windows Server 2003.

当在Loadrunner中运行代码时,我可以放入并从队列中获取消息,但是我无法进行调试。

有一个similar post here,但它没有解决方案。

+0

amqxcs2不是.NET程序集,因此无法在GAC中注册。我调试了mq .NET应用程序,但没有遇到这个错误。无法加载DLL错误可能是由于PATH问题! amqdmnet dll无法在路径中找到amqxcs2。检查PATH以查看MQ安装目录是否在PATH中。 – Shashi 2012-04-14 03:49:28

回答

0

为什么你认为“确保库是应用程序需要它的地方”不是解决方案?

您需要正确安装您打算使用的计算机上正在使用的任何产品,或者通过手动复制必要的文件到正确的位置(也可以手工计算“正确的位置”)来骗取您的方式。SysInternals工具可能有助于跟踪应用程序尝试使用哪些文件)。

0

这可能是一个COM错误。 IBM程序集可能是一个本地dll,因此您无法在GAC中注册它,这仅适用于.NET dll。本地COM dll可以使用Regsvr32进行注册。如果本机dll对另一个缺少的dll具有依赖性,也会发生此错误。另请参阅Understanding Dependencies of a Visual C++ Application,其中提供了有关Dependency Walker工具的信息,该工具可用于确定本机dll的depndencies。