У меня проблема с попыткой использования ZeroMQ в моем новом приложении. Обратите внимание: у меня нет проблем с загрузкой и сборкой самого ZeroMQ. Я скачал ZeroMQ ZIP-файл, открыл файл проекта / решения в Visual Studio / C ++ 2008 и прекрасно скомпилировал библиотеку ZeroMQ. В каталоге / lib папки установки ZeroMQ содержатся .lib, .dll и другие файлы, поэтому, насколько я знаю, все в порядке.
Моя проблема в том, что я пытаюсь создать простой проект, состоящий из примера сервера HelloWorld в руководстве пользователя ZeroMQ. Я создал следующий файл с именем helloserver.c.
//
// Hello World server
// Binds REP socket to tcp://*:5555
// Expects "Hello" from client, replies with "World"
//
#include <zmq.h>
#include <stdio.h>
#include <string.h>
int main (void)
{
zmq_msg_t request;
zmq_msg_t reply;
void *context = zmq_init (1);
// Socket to talk to clients
void *responder = zmq_socket (context, ZMQ_REP);
zmq_bind (responder, "tcp://*:5555");
while (1) {
// Wait for next request from client
zmq_msg_init (&request);
zmq_recvmsg (responder, &request, 0);
printf ("Received Hello\n");
zmq_msg_close (&request);
// Do some 'work'
Sleep (1);
// Send reply back to client
zmq_msg_init_size (&reply, 5);
memcpy (zmq_msg_data (&reply), "World", 5);
zmq_sendmsg (responder, &reply, 0);
zmq_msg_close (&reply);
}
// We never get here but if we did, this would be how we end
zmq_close (responder);
zmq_term (context);
return 0;
}
Я добавил каталог включения установки ZeroMQ в путь включения VC ++ 2008 (Свойства-> Свойства конфигурации-> C / C ++ -> Общие-> Дополнительные каталоги включения) и также добавил в проект каталог библиотеки ZeroMQ:
(Свойства-> Свойства конфигурации-> C / C ++ -> Генерация кода-> Библиотека времени выполнения, выбрана многопоточная отладка DLL / MDd).
Я пытался построить проект. Все компилируется нормально, но я получаю кучу неразрешенных внешних ссылок, таких как эта:
1> Linking ...
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_term, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_close, на который ссылается функция _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_sendmsg, на который ссылается функция _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_msg_data, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_msg_init_size, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_msg_close, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_recvmsg, на который ссылается функция _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_msg_init, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_bind, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_socket, указанный в функции _main
1> helloserver.obj: ошибка LNK2019: неразрешенный внешний символ _ imp _zmq_init, указанный в функции _main
1> C: \ work \ visualc ++ 2008 \ projects \ HelloZMQServer \ Debug \ HelloZMQServer.exe: фатальная ошибка LNK1120: 11 неразрешенных внешних проблем
Я попытался вернуться к настройкам библиотеки «Генерация кода» -> «Runtime» и попытался изменить переключатель библиотеки на «MD» или «/ MT», но ничего не получилось, я все еще получаю эти ошибки компоновщика.
Обратите внимание, что когда я создавал helloworld.c, я использовал пустой проект консольного приложения для Windows, и единственные изменения, которые я сделал, - это добавление ZeroMQ include и lib, как указано выше. Я не изменил другие настройки проекта по умолчанию. Я предполагаю, что где-то пропустил настройку проекта.
Как я могу это исправить?