Win10+VS2013环境下安装和使用ZeroMQ——验证可用(原创)

本文介绍如何在windows环境下安装和使用ZeroMQ

基本思想:

1.去官网下载Zero MQ的exe安装包(x86和x64自己看清楚了)

2.默认安装之后,去安装地址下提取出动态库的4个文件

3.在欲引用ZMQ的工程中进行相关配置即可(zmq是以动态库的形式引用的)

 

详细步骤(亲测可用:win10_vs2013_x64)

1. 官网下载最新exe安装包:http://zeromq.org/distro:microsoft-windows(看清楚x86和x64的区别!)

2. 默认安装即可(默认路径是C:\Program Files\ZeroMQ 4.0.4。自定义安装应该也无妨,不过笔者没试过)

3. 感兴趣的内容有4个:libzmq-v1xx-mt-4_0_4.lib / libzmq-v1xx-mt-4_0_4.dll / zmq.h / zmq_utils.h,自己去安装地址下找吧

此处有2个坑等着你跳:

  • v1xx到底是v100/v110/v120,取决于你的vs版本,笔者是vs2013,对应v120。其他版本的vs请在下载时自己看清楚说明
  • libzmq-v120-mt-4_0_4(release)和libzmq-v120-mt-gd-4_0_4(debug)分别对应release版和debug版,只能二选

4. 兴建自己的控制台工程,进行zmq的配置(一步都不能错)

  • 先确认:debug/release(根据前面的库来选择),x86/x64(根据系统来选择).笔者此处为debug/x64
  • 再工程配置(二选一):此处有两种方法,方法一不用拷贝文件,但是要配置搜索路径。方法二直接把文件拷贝到工程对应目录下,直接运行即可。
  • 方法一:
    • 属性->配置属性->VC++目录->包含目录:C:\Program Files\ZeroMQ 4.0.4\include
    • 属性->配置属性->VC++目录->库目录:C:\Program Files\ZeroMQ 4.0.4\lib
    • 属性->配置属性->C/C++->附加包含目录: C:\Program Files\ZeroMQ 4.0.4\include
    • 把对应的dll文件拷贝到本工程最外层的Debug或者Release目录下
  • 方法二:
    • 把lib和两个h文件拷贝到本工程的目录下
    • 属性->配置属性->链接器->输入->附加依赖项: libzmq-v120-mt-gd-4_0_4.lib
    • 把对应的dll文件拷贝到本工程最外层的Debug或者Release目录下

5. 大功告成,可以正常使用了。给出一个测试用例(client端)

#include "zmq.h"
#include "zmq_utils.h"
#include <string.h>
#include <stdio.h>

int main(void)
{
	void *context = zmq_ctx_new();

	// Socket to talk to server
	printf("Connecting to hello world server…\n");
	void *requester = zmq_socket(context, ZMQ_REQ);
	zmq_connect(requester, "tcp://localhost:5555");

	int request_nbr;
	for (request_nbr = 0; request_nbr != 10; request_nbr++) {
		zmq_msg_t request;
		zmq_msg_init_size(&request, 5);
		memcpy(zmq_msg_data(&request), "Hello", 5);
		printf("Sending Hello %d…\n", request_nbr);
		zmq_msg_send(&request, requester, 0);
		zmq_msg_close(&request);

		zmq_msg_t reply;
		zmq_msg_init(&reply);
		zmq_msg_recv(&reply, requester, 0);
		printf("Received World %d\n", request_nbr);
		zmq_msg_close(&reply);
	}
	zmq_close(requester);
	return 0;
}

 

常见错误:

  • 没看清楚x64/x86
  • 没搞清楚debug和release对应的库是哪个
  • 对动态链接库的配置有错误

参考链接:

stackoverflow问答

 


版权声明:本文为yinchao163原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。