C# 32位操作系统的IBM MQ问题(无法连接)

C# 32位操作系统的IBM MQ问题(无法连接),c#,ibm-mq,C#,Ibm Mq,在与IBM MQ 7.1客户端连接时,32位windows OS(windows xp)面临一个问题 我正在使用7.1.0.0 amqmdnet.dll(从IBM\websphere\bin文件夹引用) 我的代码是 // mq properties properties = new Hashtable(); properties.Add(MQC.CONNECTION_NAME_PROPERTY, "Connection Name"); properties.Add(MQC.TRANSPORT_P

在与IBM MQ 7.1客户端连接时,32位windows OS(windows xp)面临一个问题

我正在使用7.1.0.0 amqmdnet.dll(从IBM\websphere\bin文件夹引用)

我的代码是

// 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(浏览下一个消息)


我该如何解决这个错误,知道吗?同样的代码也适用于windows 64位操作系统。我在64位操作系统的websphere MQ client安装文件夹的bin文件夹中没有mqz.dll,它在那里工作,但在32位操作系统中失败。

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


您是否已在WinXP计算机上安装了MQ v71客户端?

任何输入都可能有帮助?谢谢,我从中下载了适用于windows的v7.1.0.0,我看不到mqz.dll(但是我看到了mqzsd.dll),您能与我共享您下载的链接吗?我已经在winXP机器上安装了MQ v7.1.0.0,我得到的是,找不到mqz.dll。如果我安装在64位机器上,虽然bin文件夹中没有mqz.dll,但它在那里工作,但是,当我在32位机器上安装相同的MQ client 7.1.0.0时,我找不到mqz.dll的dll(bin文件夹中没有mqz.dll)。我是从与您相同的链接安装的。我刚刚选择了MQ v7.1.0.2客户端,因为这是最新的补丁包。7.1.0.2也适用于我,但是,我在7.1.0.0的32位操作系统中遇到了问题。如果它适用于7102,那么就使用它。这是7.1的最新修订包。
  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);
      }
//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);