Paho MQTT lança erro de referência indefinido durante a compilação


1

Estou com um problema ao usar o cliente Paho MQTT em C.

Eu baixei os binários pré-criados para o meu sistema (Windows 10 64) na página de seus projetos . Descompactei o arquivo zip em uma pasta na pasta documentos, onde também criei um arquivo .c com o exemplo na parte inferior da página do produto Paho . Meu editor é atom e meu compilador é gcc.

Quando tentei compilá-lo no Atom, recebi este erro:

undefined reference to MQTTClient_create' 

Pesquisei e encontrei muitos tópicos, mas ainda não consegui descobrir como resolver esse problema. A partir deste tópico stackoverflow entendo que isso é um problema vinculador e que eu preciso para ligar os arquivos durante a compilação, então aqui está o que eu tentei:

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

O que ainda me dá o mesmo undefined referenceerro. Quando tento vincular à DLL com o mesmo nome, o compilador não encontra o arquivo.

Alguém poderia indicar-me a direção correta, por favor?
Qualquer ajuda é apreciada!

Respostas:


0

Gostaria de saber se você registrou a dll Paho MQTT no Windows?

Você deve ter paho-mqtt3c.dllcomo parte do download.

Não sei se isso funcionará para você, mas tenho o mesmo problema (referência indefinida MQTTClient_create) ...

  • Copie o dllarquivo parac:/windows/system32
  • Execute o prompt do CMD como administrador e digite:

    regsvr32 i/ paho-mqtt3c.dll

Vale a pena tentar.


Eu não havia registrado a dll no Windows. Quando executei seu comando paho-mqtt3c.dll, obtive: "O módulo" paho-mqtt3c.dll "estava carregado, mas o ponto de entrada DllRegisterServer não foi encontrado." Parece funcionar para o ... cs.dll, mas o compilador me dá o mesmo erro que antes.
Pete

0

O problema era que eu estava compilando o programa com o compilador gcc de 32 bits para a biblioteca de 64 bits. A instalação e o uso do MinGW64 funcionaram.


0

Eu tive o mesmo problema no OS X. Foi assim que resolvi

  1. Compilei a biblioteca paho-mqtt na instância Linux / EC2.

  2. Instalou todas as dependências:

sudo yum instalar instalar o build-essential gcc make cmake cmake-gui cmake-curses-gui

sudo yum install cmake

sudo yum instalar doxygen graphviz

  1. cmake -DPAHO_WITH_SSL = TRUE -DPAHO_BUILD_DOCUMENTATION = FALSE -DPAHO_BUILD_STATIC = VERDADEIRO -DPAHO_BUILD_SHARED = FALSE -DPAHO_MQTT_C_PATH =

  2. faço

  3. fazer html
  4. faça instalar
  5. LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: /home/ec2-user/paho.mqtt.c/src
  6. exportar LD_LIBRARY_PATH = $ LD_LIBRARY_PATH
  7. sudo ldconfig
  8. gcc test1.c -o test1 -lpaho-mqtt3c

Compilado com sucesso ..

  1. ./test1

Esta solução também funciona para o OS X. Substitua a etapa 2 por brew install cmake doxygen openssl-devel

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.