Я успешно использую библиотеку mosquitto в моем Qt-Widget-Application под Linux. Я хотел сделать то же самое для Windows 7 MSVC2015 x64, но я получаю ошибки компоновщика, которые я не понимаю.
Используя этот фрагмент в моем .pro-файле, где C: \ mosquitto — это путь к загруженной и предварительно скомпилированной библиотеке (.dll). Папка devel содержит заголовки и .lib-файлы.
INCLUDEPATH += C:/mosquitto/devel
DEPENDPATH += C:/mosquitto/devel
LIBS += -LC:/mosquitto/devel -LC:/mosquitto -lmosquitto -lmosquittopp
Я получаю ошибки компоновщика для 14 неразрешенных символов, как будто не было никаких библиотек. Я могу удалить строку «LIBS» и не получу больше неразрешенных символов. Если я неправильно пишу некоторые пути или имена в переменной LIBS, я получаю сообщение об ошибке, что mosquitto.lib не найден, поэтому пути в целом правильные.
Одним из советов может быть предупреждение от компоновщика: library machine type 'X86' conflicts with target machine type 'x64'
, Поэтому я скомпилировал исходники библиотеки вручную в x64. После этого то же самое появляется только с одним неразрешенным символом. Зачем?
Понятия не имею. Под Linux это было относительно легко. У меня проблемы с 32 / 64bit? Или есть какая-то другая зависимость, которую я пропустил?
Обновить:
Неразрешенный символ с -хорошо правильно скомпилированной -64-версией public: virtual void __cdecl mosqpp::mosquittopp::on_message(struct mosqpp::mosquitto_message const *)
, На данный момент я только открываю и публикую в MQTT-Connection: я не использую on_message (…) явно.
Задача ещё не решена.
Других решений пока нет …