Paho MQTT выдает неопределенную ошибку ссылки во время компиляции - PullRequest
0 голосов
/ 04 января 2019

У меня проблема с использованием клиента Paho MQTT в C.

Я загрузил предварительно созданные двоичные файлы для моей системы (Windows 10 64) со страницы проектов . Я распаковал zip-файл в папку в папке с документами, где я также создал файл .c с примером внизу страницы продукта Paho . Мой редактор - это atom, а мой компилятор - gcc.

Когда я пытался скомпилировать его в Atom, я получил эту ошибку:

undefined reference to MQTTClient_create' 

Поэтому я отправился на поиски и нашел множество тем, но все еще не мог понять, как решить эту проблему. Из этой темы stackoverflow Я понял, что это проблема компоновщика и что мне нужно связать файлы во время компиляции, поэтому вот что я попробовал:

gcc MQTT.c -L "C:\Users\Pete\Documents\MQTT on C\Examples\Paho\lib" -l paho-mqtt3c

Что все еще дает мне ту же ошибку undefined reference. Когда я пытаюсь связаться с DLL с тем же именем, компилятор не находит файл.

Может кто-нибудь указать мне правильное направление, пожалуйста?
Любая помощь приветствуется!

Ответы [ 3 ]

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

Проблема была в том, что я компилировал программу с 32-битным компилятором gcc для 64-битной библиотеки.Установка и использование MinGW64 работали.

0 голосов
/ 19 апреля 2019

У меня была такая же проблема в OS X. Вот как я решил ее

  1. Я скомпилировал библиотеку paho-mqtt в экземпляре Linux / EC2.

  2. Установлены все зависимости:

sudo yum install install build-essential gcc make cmake cmake-gui cmake-curses-gui

sudo yum установить cmake

sudo yum install doxygen graphviz

cmake -DPAHO_WITH_SSL = TRUE -DPAHO_BUILD_DOCUMENTATION = FALSE -DPAHO_BUILD_STATIC = TRUE -DPAHO_BUILD_SHARED = FALSE -DPAHO_MQTT_C_PATH = .. / pahoho.th.ct.ct.ct.tx.tx.tx.tx.tx.tx.tx.ct.tx.ct.tx.ct.tx.ct.tx.ct.tx.ct.tx.tx.tr..mqtt3as-static.a

make

make html make install LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: /home / ec2-user / paho.mqtt.c / src export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH sudo ldconfig gcc test1.c -o test1 -lpaho-mqtt3c

Скомпилировано успешно ..

. / Test1

Это решение работает и для OS X.Замените шаг 2 с помощью brew install cmake doxygen openssl-devel

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

Мне было бы интересно узнать, зарегистрировали ли вы Paho MQTT dll в Windows?

У вас должно быть paho-mqtt3c.dll как часть загрузки.

Я не знаюесли это будет работать для вас, но у меня та же проблема (неопределенная ссылка на MQTTClient_create) ...

  • Скопируйте файл dll в c:/windows/system32
  • Запустите CMD Prompt от имени администратора и введите:

    regsvr32 i/ paho-mqtt3c.dll

Стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...