1
votes

Paho MQTT renvoie une erreur de référence non définie lors de la compilation

J'ai un problème avec le client Paho MQTT en C.

J'ai téléchargé les binaires pré-construits pour mon système (Windows 10 64) à partir de leur page des projets . J'ai décompressé le fichier zip dans un dossier du dossier documents, où j'ai également créé un fichier .c avec l'exemple au bas du Paho page produit . Mon éditeur est atom et mon compilateur est gcc.

Quand j'ai essayé de le compiler dans Atom, j'ai eu cette erreur:

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

J'ai donc cherché et j'ai trouvé beaucoup de sujets, mais je n'arrivais toujours pas à comprendre comment résoudre ce problème. À partir de ce sujet de stackoverflow , je suppose que c'est un problème d'éditeur de liens et que je besoin de lier les fichiers pendant la compilation, alors voici ce que j'ai essayé:

undefined reference to MQTTClient_create' 

Ce qui me donne toujours la même erreur de référence non définie . Lorsque j'essaye de créer un lien vers la DLL du même nom, le compilateur ne trouve pas le fichier.

Quelqu'un peut-il m'indiquer la bonne direction, s'il vous plaît?
Toute aide est appréciée!


0 commentaires

3 Réponses :


0
votes

Je serais intéressé de savoir si vous avez enregistré la dll Paho MQTT dans Windows?

Vous devriez avoir paho-mqtt3c.dll dans le cadre du téléchargement.

Je ne sais pas si cela fonctionnera pour vous, mais j'ai le même problème (référence non définie à MQTTClient_create ) ...

  • Copiez le fichier dll dans c:/windows/system32
  • Exécutez l'invite CMD en tant qu'administrateur et tapez:

    regsvr32 i / paho-mqtt3c.dll

Ça vaut le coup d'essayer.


1 commentaires

Je n'avais pas enregistré la DLL dans Windows. Quand j'ai exécuté votre commande pour paho-mqtt3c.dll j'ai obtenu: "Le module" paho-mqtt3c.dll "a été chargé mais le point d'entrée DllRegisterServer n'a pas été trouvé." Cela semble fonctionner pour le ... cs.dll, mais le compilateur me donne la même erreur qu'avant.



0
votes

Le problème était que je compilais le programme avec le compilateur gcc 32 bits pour la bibliothèque 64 bits. L'installation et l'utilisation de MinGW64 ont fonctionné.


0 commentaires

0
votes

J'ai eu le même problème sous OS X. Voici comment je l'ai résolu

  1. J'ai compilé la bibliothèque paho-mqtt dans une instance Linux / EC2.

  2. A installé toutes les dépendances:

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

sudo yum installer cmake

sudo yum installer doxygen graphviz

  1. cmake -DPAHO_WITH_SSL = TRUE -DPAHO_BUILD_DOCUMENTATION = FALSE -DPAHO_BUILD_STATIC = TRUE -DPAHO_BUILD_SHARED = FALSE -DPAHO_MQTT_C_PATHrc = .. / paho.mahott.c_PATHrc.cq / paho.mqp. .mqtt3as-static.a

  2. faire

  3. créer du HTML
  4. effectuer l'installation
  5. LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: /home/ec2-user/paho.mqtt.c/src
  6. exporter LD_LIBRARY_PATH = $ LD_LIBRARY_PATH
  7. sudo ldconfig
  8. gcc test1.c -o test1 -lpaho-mqtt3c

Compilé avec succès ..

  1. ./test1

Cette solution fonctionne également pour OS X. Remplacez l'étape 2 par brew install cmake doxygen openssl-devel


0 commentaires