Использование ZeroMQ с Visual Studio 2008 - ошибки LNK2019 - PullRequest
0 голосов
/ 28 июня 2018

Мне нужно использовать ZeroMQ в приложении, построенном в Visual Studio 2008. Я сделал следующее:

-Загрузите ZeroMQ, чтобы получить следующую библиотеку: libzmq-v90-mt-4_0_4.lib.

-Клонировал репозиторий libzmq от Github.

-В свойствах проекта Visual Studio: добавлен каталог \ include библиотеки libzmq в C / C ++ -> Включить каталоги добавления, добавлен libzmq-v90-mt-4_0_4.lib в компоновщик-> Ввод-> Добавление Зависимости, добавили каталог библиотеки в компоновщик-> Общие-> Дополнительные каталоги библиотеки.

У меня есть оба файла: 'zmq.hpp' и 'zmq.h' в каталоге '\ include', я читал противоположные вещи, на которые я должен ссылаться. Я также читал о том, что ZMQ_STATIC нужно определить, но это не решило проблему компоновщика. Любой совет будет оценен!

#include <zmq.hpp>
#include <string>
#include <iostream>
#include "snoopygs.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
//  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;
    }   

QApplication a(argc, argv);
SnoopyGS w;
w.show();
return a.exec();
}

Это 2 примера ошибок компоновки:

ошибка LNK2019: неразрешенный внешний символ __imp__zmq_msg_init, на который ссылается функция "public: __thiscall zmq :: message_t :: message_t (void)" (?? 0message_t @ zmq @@ QAE @ XZ) ошибка LNK2019: неразрешенный внешний символ __imp__zmq_errno, указанный в функции "public: __thiscall zmq :: error_t :: error_t (void)" (?? 0error_t @ zmq @@ QAE @ XZ)

...