2013-04-24 35 views
0

当与IBM MQ 7.1客户端连接时,存在32位Windows操作系统(Windows XP)面临的问题。IBM 32位操作系统问题(无法连接)

我使用7.1.0.0 amqmdnet.dll(来自IBM \ websphere的\ bin文件夹中引用)

<Reference Include="amqmdnet, Version=7.1.0.0, Culture=neutral, PublicKeyToken=da2dc1d9abf9ed97, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..IBM\WebSphereMQ\7.1.0.0\amqmdnet.dll</HintPath> 
</Reference> 

(从IBM link下载)

,建设使用MQ.NET类我的.net应用程序但是部署后,如果目标机器已经安装7.1.0.0 MQ客户端,应用程序抛出

System.DllNotFoundException:无法加载DLL“C:\ PROGRAM 文件\我BM \ WebSphere MQ \ bin \ mqz.dll':找不到指定的模块 。 (异常来自HRESULT:0x8007007E)

at NativeUnmanagedType.zstSPI(Int32 hConn, Int32 verbId, Int32 hObj, Byte[] pInOut, Byte[] pIn, Byte[] pOut, Int32& compCode, Int32& reason) 
    at IBM.WMQ.Nmqi.UnmanagedNmqiMQ.SPIQuerySPI(Hconn hConn, Int32 verbId, Int32& maxInOutVersion, Int32& maxInVersion, Int32& maxOutVersion, Int32& flags, Int32& pCompCode, Int32& pReason) 
    at IBM.WMQ.Nmqi.UnmanagedNmqiMQ.MQCONNX(String pQMgrName, MQCNO& pConnectOpts, Hconn parentHconn, Phconn phconn, Int32& pCompCode, Int32& pReason) 
    at IBM.WMQ.Nmqi.UnmanagedNmqiMQ.MQCONNX(String pQMgrName, MQConnectOptions pConnectOpts, Phconn phconn, Int32& pCompCode, Int32& pReason) 
    at IBM.WMQ.MQQueueManager.Connect(String queueManagerName) 
    at IBM.WMQ.MQQueueManager..ctor(String queueManagerName, Hashtable properties) 

我的代码是

// mq properties 
properties = new Hashtable(); 
properties.Add(MQC.CONNECTION_NAME_PROPERTY, "Connection Name"); 
properties.Add(MQC.TRANSPORT_PROPERTY, "Transport Type"); 
properties.Add(MQC.CHANNEL_PROPERTY, "Channel Name"); 
properties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_HANDLE_SHARE_BLOCK); 

//To read the messages 
mqGetMsgOpts = new MQGetMessageOptions(); 

if (mqQueue != null) 
      { 
       //Get options for the messsage     
       mqGetMsgOpts.Options = MQC.MQGMO_BROWSE_FIRST | MQC.MQGMO_WAIT | MQC.MQOO_INQUIRE; 
       mqGetMsgOpts.MatchOptions = MQC.MQMO_NONE; 
       mqGetMsgOpts.WaitInterval = 5000; // 5 seconds limit for waiting 
      } 

     if (mqMsg.MessageLength > 0 && mqMsg.DataLength > 0) 
     { 
     messageData = mqMsg.ReadString(mqMsg.MessageLength); 
     } 

还有就是队列管理器后browse_next调用commit(所以浏览下一个讯息话题)。

//To put the message 
if(mqQueue==null) 
mqQueue = mqQMgr.AccessQueue("Queue Name", 
MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE); 

    mqMsg.WriteString(message); 

我该如何解决该错误,任何想法?相同的一段代码可以很好地运行Windows 64位操作系统。我没有在64位操作系统的websphere MQ客户端安装文件夹中的bin文件夹中存在mqz.dll,它可以工作,但是它在iin 32位操作系统中失败。

+0

任何输入可能有帮助吗? – Sharpeye500 2013-04-24 06:41:23

回答

1

我只是在64位机器上安装MQ v71客户端。我可以在Program Files (x86)\IBM\WebSphere MQ\binProgram Files (x86)\IBM\WebSphere MQ\bin64文件夹中看到MQZ.DLL。

你有没有安装 WinXP机器上的MQ v71客户端?

+0

谢谢,我从http://www-01.ibm.com/support/docview.wss?uid=swg24031412下载了v7.1.0.0 for windows,我没有看到mqz.dll(但是我看到了mqzsd。 DLL),你可以分享我从你下载的地方的链接?我已经在winXP机器上安装了MQ v7.1.0.0,我收到了,找不到mqz.dll。 – Sharpeye500 2013-04-24 14:46:42

+0

如果我在64位机器上安装,虽然我没有bin文件夹中的MQZ.dll,但它在那里工作,但是,当我在32位机器上安装相同的MQ客户端7.1.0.0时,我得到的是dll找不到MQZ.dll(bin文件夹中没有MQZ.dll)。 – Sharpeye500 2013-04-24 15:13:16

+0

我使用与您相同的链接安装。我只是选择MQ v7.1.0.2客户端,因为这是最新的修复包。 – Shashi 2013-04-24 16:14:56

相关问题