Я получаю сообщение об ошибке #include <czmq.h> при запуске программы - PullRequest
0 голосов
/ 11 января 2019

Последние 4 дня я пытаюсь заставить Zeromq работать на моем компьютере с Windows, но мне кажется, что ничего не происходит.

Я следовал заданным шагам и решил несколько проблем зависимости.

Я успешно собрал libzmq, czmq, libsodium.

Я использовал cmake 3.12 для настройки и VS2015 SDK 8.1 для построения решения.

Мне удалось запустить czmq_selftest.exe, но это не удалось по нескольким причинам, и это другая проблема.

Но когда я пытаюсь запустить основную программу myapp.c

#include <czmq.h>
int main (void) {
 zsock_t *publisher = zsock_new (ZMQ_PUB);
 zsock_set_curve_server (publisher, true);
 puts ("Hello, Curve!");
 zsock_destroy(&publisher);
 return 0;
}

Я вижу эту проблему с отсутствующей библиотекой, я попробовал данный метод связи -

 gcc myapp.c -o myapp -lczmq -lzmq

Но ничего не работает, было бы очень полезно, если бы кто-то мог предложить какое-то решение.

Вот другая информация -

OS - Windows 10
Cmake - 3.13.2
Visual Studio 2015, SDK 8.1
libzmq 4.3.0
czmq 4.1.1

Источник: https://github.com/zeromq/czmq

Дополнительная информация-

Моя система -

C:\Users\P\go\src\github.com\zeromq\czmq\include

содержит все библиотеки.

Моя программа находится в -

C:\Users\P\go\src\github.com\zeromq\czmq\examples\security

Спасибо

1 Ответ

0 голосов
/ 11 января 2019

Компилятор не может отслеживать все библиотеки, которые пользователь мог установить в системе самостоятельно. Вы должны указать компилятору, где он может найти такие вещи, как заголовочные файлы или библиотеки компоновщика.

Чтобы указать компилятору добавить путь к списку, который он использует для поиска файла заголовка, используйте параметр -I (верхний регистр i).

Чтобы указать компоновщику добавить путь к списку, который он использует для поиска библиотек компоновщика, используйте параметр -L.

Учитывая пути, которые вы упомянули в своем вопросе и комментариях, вам нужно добавить и -I../../include, и -L../../Debug.

То есть ваша полная команда должна выглядеть примерно так:

gcc myapp.c -o myapp -I../../include -L../../Debug -lczmq -lzmq

Конечно, для этого требуется, чтобы вы находились в каталоге C:\Users\P\go\src\github.com\zeromq\czmq\examples\security, как вы говорите.

...