Я создал проект Visual Studio 2019 на Windows, в котором я пытаюсь заставить работать пример сервера ZeroMQ.
Я скачал последнюю версию libzmq из здесь, извлек это в мою директорию проекта VS. Я также скачал этот файл и поместил его в каталог include
libzmq. Затем я добавил этот каталог include в Include Directories
в свойствах проекта.
При попытке компилирования я получаю следующий вывод:
1>------ Build started: Project: SimConnect Server, Configuration: Debug x64 ------
1>SimConnect Server.cpp
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_errno referenced in function "public: __cdecl zmq::error_t::error_t(void)" (??0error_t@zmq@@QEAA@XZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_strerror referenced in function "public: virtual char const * __cdecl zmq::error_t::what(void)const " (?what@error_t@zmq@@UEBAPEBDXZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_ctx_new referenced in function "public: __cdecl zmq::context_t::context_t(int,int)" (??0context_t@zmq@@QEAA@HH@Z)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_ctx_set referenced in function "public: __cdecl zmq::context_t::context_t(int,int)" (??0context_t@zmq@@QEAA@HH@Z)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_ctx_destroy referenced in function "public: void __cdecl zmq::context_t::close(void)" (?close@context_t@zmq@@QEAAXXZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_init referenced in function "public: __cdecl zmq::message_t::message_t(void)" (??0message_t@zmq@@QEAA@XZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_init_size referenced in function "public: __cdecl zmq::message_t::message_t<class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > > >(class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > >,class std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > >)" (??$?0V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@message_t@zmq@@QEAA@V?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@0@Z)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_send referenced in function "public: class zmq::detail::trivial_optional<unsigned __int64> __cdecl zmq::detail::socket_base::send(class zmq::message_t &,enum zmq::send_flags)" (?send@socket_base@detail@zmq@@QEAA?AV?$trivial_optional@_K@23@AEAVmessage_t@3@W4send_flags@3@@Z)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_recv referenced in function "public: class zmq::detail::trivial_optional<unsigned __int64> __cdecl zmq::detail::socket_base::recv(class zmq::message_t &,enum zmq::recv_flags)" (?recv@socket_base@detail@zmq@@QEAA?AV?$trivial_optional@_K@23@AEAVmessage_t@3@W4recv_flags@3@@Z)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_close referenced in function "public: __cdecl zmq::message_t::~message_t(void)" (??1message_t@zmq@@QEAA@XZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_data referenced in function "public: void * __cdecl zmq::message_t::data(void)" (?data@message_t@zmq@@QEAAPEAXXZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_size referenced in function "public: unsigned __int64 __cdecl zmq::message_t::size(void)const " (?size@message_t@zmq@@QEBA_KXZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_socket referenced in function "public: __cdecl zmq::socket_t::socket_t(class zmq::context_t &,int)" (??0socket_t@zmq@@QEAA@AEAVcontext_t@1@H@Z)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_close referenced in function "public: void __cdecl zmq::socket_t::close(void)" (?close@socket_t@zmq@@QEAAXXZ)
1>SimConnect Server.obj : error LNK2019: unresolved external symbol __imp_zmq_bind referenced in function "public: void __cdecl zmq::detail::socket_base::bind(char const *)" (?bind@socket_base@detail@zmq@@QEAAXPEBD@Z)
1>C:\Path\To\VS\Project\x64\Debug\SimConnect Server.exe : fatal error LNK1120: 15 unresolved externals
1>Done building project "SimConnect Server.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Это код:
#include <string>
#include <chrono>
#include <thread>
#include <iostream>
#include <zmq.hpp>
int main()
{
using namespace std::chrono_literals;
// initialize the zmq context with a single IO thread
zmq::context_t context{ 1 };
// construct a REP (reply) socket and bind to interface
zmq::socket_t socket{ context, ZMQ_REP };
socket.bind("tcp://127.0.0.1:5555");
// prepare some static data for responses
const std::string data{ "World" };
for (;;)
{
zmq::message_t request;
// receive a request from client
socket.recv(request, zmq::recv_flags::none);
std::cout << "Received " << request.to_string() << std::endl;
// simulate work
std::this_thread::sleep_for(1s);
// construct a reply message
zmq::message_t reply{ data.cbegin(), data.cend() };
// send the reply to the client
socket.send(reply, zmq::send_flags::none);
}
return 0;
}
Из того, что я прочитал в Интернете, я думаю, что мне нужно установить какую-то библиотеку для windows, но я понятия не имею, где ее взять или как ее установить.
Пожалуйста, имейте в виду, что я очень плохо знаком с C ++.