【问题标题】:C++ Unresolved external function IBM Websphere MQC++ 未解析的外部函数 IBM Websphere MQ
【发布时间】:2014-09-07 00:02:56
【问题描述】:

我正在使用 IBM Websphere MQ 库 imqb23vn.Lib 和 imqs23vn.Lib 在 Visual Studio 2010 中构建一个 64 位 C++ 应用程序。

我从 IBM 下载了 64 位版本的库并将它们放入 lib 目录。

我在附加库目录下的链接器属性中引用了该目录。 在 Linker->Input 下,我在 Additional Dependencies 下包含了两个库。

当我编译应用程序时,我得到一堆链接错误 LNK2001: unresolved external symbol "public: static inc __cdecl ImqMgr::behavior(void)

我在一个新的 Windows 2008 64 位服务器上设置它。该应用程序在当前 32 位 Windows 2003 服务器环境中编译并运行了 9 年。

【问题讨论】:

  • 你用的是什么版本的MQ?
  • 我使用的是 7.5 版。
  • 我能够在 Windows 2008 R2 Server 上使用 VS2010 SP1 成功编译 imqsget.cpp。应用程序也是 64 位的。

标签: c++ visual-studio-2010 windows-server-2008 ibm-mq


【解决方案1】:

这是事实。您的链接器找不到库。检查您使用的是 64 位库及其路径,而不是 32 位版本。

【讨论】:

  • 我仔细检查了文件的版本和项目中的路径。
【解决方案2】:

首先你说:

我正在使用 IBM Websphere MQ 库 imqb23vn.Lib 和 imqs23vn.Lib 来 在 Visual Studio 2010 中构建 64 位 C++ 应用程序。

然后你说:

我在新的 Windows 2008 64 位服务器上进行设置。这 应用程序在当前 32 位编译并运行良好 9 年 Windows 2003 服务器环境。

您是在构建 32 位还是 64 位应用程序?此外,IBM 在 9 年内对接口进行了更改 - 听起来您使用的是 MQ v5.3。

我正在使用 MS VS 2010 构建 32 位和 64 位应用程序没有任何问题。您是否在项目中设置了 MQ 库的位置?

即对于默认安装的 WMQ v7.5:

32 位 MQ 库位于: C:\Program Files (x86)\IBM\WebSphere MQ\Tools\Lib\

64 位 MQ 库位于: C:\Program Files (x86)\IBM\WebSphere MQ\Tools\Lib64\

【讨论】:

  • 罗杰,感谢您的评论。是的,我正在构建应用程序的 64 位版本。从我找到的所有内容来看,这些库仍然相同:imqb23vn.Lib、imqc23vn.Lib 和 imqs23vn.Lib。它们在 WMQ v7.5 中。我在上面引用的 Lib64 目录中找到了那些。我在我的项目的 Lib 目录中有库,它在项目属性中被引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2016-05-10
  • 2019-09-03
相关资源
最近更新 更多