2015-09-14 106 views
1

我試圖構建zguide C++示例,但編譯失敗。以下是錯誤輸出中:zGuide for zeroMQ編譯失敗

asyncsrv.cpp: In member function ‘void client_task::start()’: 
asyncsrv.cpp:37:70: error: cannot convert ‘zmq::socket_t’ to ‘void*’ in initialization zmq::pollitem_t items[] = {{client_socket_, 0, ZMQ_POLLIN, 0}}; 

asyncsrv.cpp: In member function ‘void server_task::run()’: asyncsrv.cpp:140:52: error: cannot convert ‘zmq::socket_t’ to ‘void*’ for argument ‘1’ to ‘void zmq::proxy(void*, void*, void*)’ zmq::proxy(frontend_, backend_, nullptr); 
+0

聽起來可能是您安裝的ZMQ和您試圖運行的示例代碼之間的版本不兼容...您介意給出您的ZMQ版本和示例代碼的鏈接? – Jason

+0

zmqversion是4.1.3,zGuide具有最新的標籤v2.2-1024-g40230a3並提交sha1 40230a37eb45d8564733bedc08c333190387df3d。 C樣本構建得很好。 –

回答

8

如果您使用的是C++編譯器11,看到你的zmq.hpp是最新版本,並通過

std::vector<zmq::pollitem_t> items = {{static_cast<void *>(client_socket_), 0, ZMQ_POLLIN, 0}}; 
更換線

zmq::pollitem_t items[] = {{client_socket_, 0, ZMQ_POLLIN, 0}}; 

and line

zmq::proxy(frontend_, backend_, nullptr); 

by

zmq::proxy(static_cast<void *>(frontend_), static_cast<void *>(backend_), nullptr); 
+0

我在gcc 5上遇到了這個問題,而它在鏗鏘聲中編譯得很好 – fferri