问题描述:
最近在使用zmq的 pub/sup模型的时候,使用zmq_poller就出现 was not declared in this scope
问题分析
-
关于这个问题,见zmq.h 619行左右:
619: #ifdef ZMQ_BUILD_DRAFT_API
poller相关的api接口都在里面,如果这里没有定义ZMQ_BUILD_DRAFT_API宏,poller相关的API是无法使用的. -
我看见tests里面有关于poller相关的测试,所以默认编译后的库,应该是支持poller的.
结论:内部实现了poller,但是poller相关的API(可能)没有直接提供.
所以我们在使用的时候,定义ZMQ_BUILD_DRAFT_API这个宏就可以了.
例子:
方法一:在代码里面改
/*main.cpp*/
#define ZMQ_BUILD_DRAFT_API
#include "zmq.h"....
方法二:
代码不变,自己代码编译时,加上 -D ZMQ_BUILD_DRAFT_API
g++ main.cpp -std=c++11 -D ZMQ_BUILD_DRAFT_API -g -lzmq -lpthread -o x