Visual Studio 2015社区ZeroMQ静态库链接错误

时间:2016-06-08 23:08:14

标签: c++ static-libraries zeromq static-linking visual-studio-2015

我正在尝试在Visual Studio 2015中使用ZeroMQ的静态库。我通过克隆git repository生成它,将fd.hpp中的windows.hpp include从#include <windows.hpp>更改为{{1将libsodium放在正确的位置,然后在vs2015解决方案中批量构建所有内容。

在程序中我试图在ZeroMQ中使用ZeroMQ包含目录,包括ZeroMQ发布静态目录(libzmq \ bin \ Win32 \ Release \ v140 \ static),添加libzqm.lib作为附加依赖项,定义ZMQ_STATIC和_CRT_SECURE_NO_WARNINGS用于我在程序中执行的其他操作,并将运行时库更改为多线程/ MT。

当我尝试编译时,我得到了这些错误:

#include "windows.hpp"

令我困惑的是,当我包含ZeroMQ发布动态目录(libzmq \ bin \ Win32 \ Release \ v140 \ dynamic),其中包含dll时,它编译得很好。但是,当我尝试运行我的程序时,它需要运行dll。这是我试图通过使用ZeroMQ的静态库来避免的。我现在不知道该做什么。

修改

我不相信我的问题与this有关,因为在我看来静态.lib是在.dll中引用的东西,这意味着我需要将.dll包含在我的程序中,并不是这意味着我不是真的静态连接图书馆?有没有人能够在Windows上使用ZeroMQ而不需要dll?

2 个答案:

答案 0 :(得分:6)

看起来我也需要链接到这些库。

wsock32.lib
ws2_32.lib
Iphlpapi.lib

答案 1 :(得分:0)

对于任何发现这个并正在阅读此内容的人来说,LetoTheSecond的回答是正确的。

如果你是像我这样的VS的新手,这里有关于该做什么的明确指示。

右键单击您的项目。
转到链接器 - &gt;输入
将以下内容添加到“附加依赖项”

ws2_32.lib;wsock32.lib;Iphlpapi.lib

(为VS2017工作)