最近需要做一个密集计算型的项目,采用的是分布式计算架构,各子系统间通信用到了ZeroMQ(http://zeromq.org/)。ZeroMQ是一个高性能消息队列库,可作为一个动态库链接的应用程序中,而且性能非常强悍(参考http://www.cnblogs.com/rainbowzc/p/3357594.html)。
使用的是官方提供的libzmq,使用前需要自己编译,下面介绍一下编译的步骤,同时记录类编译过程中遇到了两个问题及解决方法。
步骤一:下载libzmq。我下载的版本是4.1.4。下载地址是https://github.com/zeromq/libzmq,下载到本地后目录结构如下:
其中builds->msvc目录如下:
可以根据自己的实际情况选择不同的VS版本进行编译。我用的是VS2010.
打开之后工程目录如下:
编译libzmq工程即可。但是编译过程中出现了两个错误。
错误一:提示“error C1083: 无法打开包括文件:“sodium/core.h”: No such file or directory”
错误二:提示“error C3861: “if_nametoindex”: 找不到标识符”
错误一的解决方法:原因是缺少libsodium库,因此从https://download.libsodium.org/libsodium/releases/下载针对VS的最新版(libsodium-1.0.8-msvc.zip)。
并将的libsodium-1.0.8-msvc.zip解压到zeromq4.1.4所在文件夹下,并将解压后的文件夹重命名为libsodium,然后使用VS2010编译libsodium,编译完成后再次编译libzmq,这个错误不再出现。
错误二的解决方法:在libzmq工程上右键-属性,弹出的属性页中,在配置属性-连接器-输入中的“附加依赖项”中增加Iphlpapi.lib,如下图所示:
然后在出错的“tcp_address.cpp”文件上方增加“#include <netioapi.h>”,如下图所示:
然后再次编译生成libzmq即可。