我刚刚将一个项目从 VS2010 升级到 VS2013,现在每当我通过 MQ 发送消息时它都会崩溃,但它在 VS2010 下运行良好。

我怀疑这与 VS2013 有关,所以我构建了一个 MQ 附带的演示应用程序 - imqwrld.cpp,这是一个简单的“hello world”应用程序。

仅此代码就足以让调试运行时库抛出异常:

 #include <imqi.hpp> // WebSphere MQ C++
 int main ( int argc, char * * argv ) {

    ImqQueue * p = new ImqQueue();
    delete p;
    return 0
 }

当 ImqObject 被删除时,crtl 检测到内存损坏。

我怀疑这是因为 DLL hell 。 MQ dll 依赖于 msvcr80.dll,我的程序使用不同版本的库 - msvcr120d.dll。

关于如何解决这个问题的任何建议?我正在使用 MQ 客户端 7

最佳答案

它的当前版本(最高包括 7.5)错误/限制 - MQ 生成其 C++ 库的编译器和 Visual Studio 2012+ 编译器显然是二进制不兼容的。除了根据您尝试执行的操作使用 C 或 .NET API 之外,您无法解决或解决此问题...

正如@John M Gant 在下面评论的那样,here 是 IBM 的官方支持页面。顺便说一句,它看起来像 VS2012 中用于 C++ 的 MQ Series 8.0 is supported

关于winapi - Websphere MQ C++ 客户端在 VS2013 中崩溃 - 库/链接器问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20062808/

10-10 21:33