Последние 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
Спасибо
Я добавил дополнительную информацию о файлах заголовков, файлах библиотеки, если вы имеете в виду под "czmq.lib" и "libczmq.dll", тогда она хранится в "C: \ Users \ P \ go \ src \ github.com \ zeromq \ czmq" \Отлаживать\"
Итак, ваш вопрос о правильном использовании CMake или компиляции командной строки? Если вы хотите спросить о подходе CMake, покажите свой сценарий CMakeLists.txt. В противном случае удалите тег cmake как несвязанный.
@Tsyvarev ну, я поставил тег cmake, поскольку я использовал cmake для настройки и генерации и чувствовал, что это может быть одной из причин сбоя. Хорошо, я обновлю CmakeList, если он может быть здесь полезен.
Я удалил тег cmake из этого вопроса, я задам для этого отдельный вопрос.





Компилятор не может отслеживать все библиотеки, которые пользователь мог установить в системе самостоятельно. Вы должны указать компилятору, где он может найти такие вещи, как файлы заголовков или библиотеки компоновщика.
Чтобы указать компилятору добавить путь к списку, который он использует для поиска файла заголовка, используйте опцию -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, как вы говорите.
Вышеупомянутый метод теперь дает мне странную ошибку - C: / Ruby25-x64 / msys64 / mingw64 / bin /../ lib / gcc / x86_64-w64-mingw 32 / 8.2.1 /../../../ .. / x86_64-w64-mingw32 / bin / ld.exe: несовместимый пропуск
Также для упрощения и понимания проблемы я скопировал отсутствующий файл заголовка в каталог, в котором есть файл myapp.c, но он все еще показывает мне ту же проблему.
@gadhvi Что касается ошибок компоновщика, вам, вероятно, следует задать новый вопрос. Для другой проблемы, если вы хотите включить файлы заголовков из того же каталога, что и сам исходный файл, используйте вместо этого двойные кавычки, как в #include "czmq.h".
Что ж, вы правы, мне нужно спросить другого, поскольку это действительно решено.
Где установлена библиотека czmq? Где установлены файлы заголовков библиотек? Возможно, вам нужно передать опцию
-I(верхний регистр i), чтобы указать расположение файлов заголовков? И конечно файл заголовка является где-то устанавливал?