मैं अभी सीखना शुरू कर रहा हूं कि zeromq पुस्तकालयों के साथ कैसे काम करना है और विभिन्न सी ++ परियोजनाओं में उनका उपयोग करना है। नमूना कोड है कि मैं ने लिखा है (वास्तव में वहाँ ट्यूटोरियल से नकल) यह है:cmake में zeromq पुस्तकालयों को कैसे आयात करें?
// file: main.cpp
// Hello World client in C++
// Connects REQ socket to tcp://localhost:5555
// Sends "Hello" to server, expects "World" back
//
#include <zmq.hpp>
#include <string>
#include <iostream>
int main()
{
// Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REQ);
std::cout << "Connecting to hello world server…" << std::endl;
socket.connect ("tcp://localhost:5555");
// Do 10 requests, waiting each time for a response
for (int request_nbr = 0; request_nbr != 10; request_nbr++) {
zmq::message_t request (5);
memcpy (request.data(), "Hello", 5);
std::cout << "Sending Hello " << request_nbr << "…" << std::endl;
socket.send (request);
// Get the reply.
zmq::message_t reply;
socket.recv (&reply);
std::cout << "Received World " << request_nbr << std::endl;
}
return 0;
}
और नीचे कमांड के साथ इस फाइल के उत्पादन का निर्माण करके:
g++ main.cpp -o test -lzmq
फ़ाइल के साथ उत्पन्न हो जाएगा कोई बात नहीं।
समस्या यह है कि मैं यह है कि मैं CMake.Thus का उपयोग कर फ़ाइल का निर्माण करना चाहते है, मैं नीचे के रूप में एक CMakeLists.txt
फ़ाइल में लिखा है:
cmake_minimum_required(VERSION 3.6)
project(test2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lzmq")
set(SOURCE_FILES main.cpp)
add_executable(test2 ${SOURCE_FILES})
बात यह है कि मैंने सोचा था कि निर्माण करने के लिए पर्याप्त होगी कार्यक्रम -lzmq
है, लेकिन उस टुकड़े भी शामिल है, मैं प्राप्त निम्न त्रुटि संदेश:
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::error_t::error_t()':
/usr/include/zmq.hpp:62: undefined reference to `zmq_errno'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::error_t::what() const':
/usr/include/zmq.hpp:66: undefined reference to `zmq_strerror'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::message_t::message_t()':
/usr/include/zmq.hpp:107: undefined reference to `zmq_msg_init'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::message_t::message_t(unsigned long)':
/usr/include/zmq.hpp:114: undefined reference to `zmq_msg_init_size'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::message_t::~message_t()':
/usr/include/zmq.hpp:129: undefined reference to `zmq_msg_close'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::message_t::data()':
/usr/include/zmq.hpp:180: undefined reference to `zmq_msg_data'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::context_t::context_t(int)':
/usr/include/zmq.hpp:204: undefined reference to `zmq_init'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::context_t::~context_t()':
/usr/include/zmq.hpp:225: undefined reference to `zmq_term'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::socket_t::socket_t(zmq::context_t&, int)':
/usr/include/zmq.hpp:251: undefined reference to `zmq_socket'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::socket_t::close()':
/usr/include/zmq.hpp:283: undefined reference to `zmq_close'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::socket_t::connect(char const*)':
/usr/include/zmq.hpp:314: undefined reference to `zmq_connect'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::socket_t::send(zmq::message_t&, int)':
/usr/include/zmq.hpp:321: undefined reference to `zmq_send'
/usr/include/zmq.hpp:324: undefined reference to `zmq_errno'
CMakeFiles/test2.dir/main.cpp.o: In function `zmq::socket_t::recv(zmq::message_t*, int)':
/usr/include/zmq.hpp:331: undefined reference to `zmq_recv'
/usr/include/zmq.hpp:334: undefined reference to `zmq_errno'
मैं CMake फ़ाइल में चर का एक और प्रकार सेट करनी चाहिए या मैं एक गलत निर्देशिका में पुस्तकालय स्थापित किया है? या क्या ऐसा कुछ और है जिसका मुझे उल्लेख करना चाहिए था? और जिस सिस्टम विच पर मैं काम कर रहा हूं वह उबंटू 14.04
मैक ओएस एक्स और उबंटू पर मुझे एक त्रुटि आई जब तक कि मैंने 'सुडो एपीटी इंस्टॉल libzmq5' [उबंटू] या' ब्रू इंस्टॉल जेएमक्यू '[ओएस एक्स] –