在构建用于x64架构的ZeroMQ库时出现未解决的外部错误,但对于32位而言效果很好

问题描述

我使用此link为c ++安装了ZeroMQ。我遵循CMake的方法来构建libsodiumlibzmq项目。成功完成所有步骤之后,我可以在VS2015上针对32种配置的发布和调试模式构建和运行我的应用程序。但是,当我尝试使用x64配置构建相同的项目时,出现以下错误

1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_send
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_ctx_destroy
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_setsockopt
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_socket
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_strerror
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_close
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_connect
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_ctx_set
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_errno
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_ctx_new
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_msg_init
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_msg_data
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_msg_size
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_msg_recv
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_msg_close
1>zmqClientCPP.obj : error LNK2001: unresolved external symbol __imp_zmq_getsockopt

我尝试了以下操作:

  • #define ZMQ_STATIC之前添加#include <zmq.hpp>

  • 在项目配置中进行了链接

    properties - > configuration properties -> c/c++ -> General -> additional include directories : C:\libzmq\include;%(AdditionalIncludeDirectories)

    properties - > configuration properties -> Linker -> Input : libzmq-v140-mt-4_3_3.lib;%(AdditionalDependencies)

    properties - > configuration properties -> Linker -> General -> Additional Library directories : C:\libzmq\lib\;%(AdditionalLibraryDirectories)

问题仍然没有解决

我不确定我缺少什么。任何帮助将不胜感激。

解决方法

谢谢大家的帮助。

最后,按照以下步骤解决了该问题:

  1. 使用以下步骤安装vcpkg

    C:\>git clone https://github.com/microsoft/vcpkg.git

    C:\>cd vcpkg

    C:\vcpkg>bootstrap-vcpkg.bat

成功安装后,您可以使用来检查所有可用软件包

C:\vcpkg> vcpkg search命令,或者您可以通过键入过滤器名称C:\vcpkg>vcpkg.exe search zmq进行过滤,您将看到如下所示的结果:

Search results for "zmq"

  1. 安装完vcpkg后,我们必须使用以下命令安装zeromq

    C:\vcpkg> vcpkg.exe install zeromq:x64-windows-static(对于我来说,我要安装64位)

  2. 此后,我们所有人都准备使用zeromq构建我们自己的项目。如果需要链接库方面的帮助,我们可以参考this