在C中使用Paho MQTT客户端时遇到问题。
我从其projects page下载了针对我的系统(Windows 10 64)的预编译二进制文件。我将zip文件解压缩到documents文件夹中的一个文件夹,在该文件夹中,我还创建了一个.c文件,示例位于Paho product page的底部。我的编辑器是atom,我的编译器是gcc。
当我尝试在Atom中进行编译时,出现此错误:
undefined reference to MQTTClient_create'
因此,我去搜索并发现了很多主题,但是我仍然不知道如何解决此问题。从this stackoverflow topic中,我发现这是一个链接器问题,在编译过程中需要链接文件,因此,我尝试了以下方法:
gcc MQTT.c -L "C:\Users\Pete\Documents\MQTT on C\Examples\Paho\lib" -l paho-mqtt3c
这仍然给我同样的undefined reference
错误。当我尝试链接到同名的dll时,编译器找不到该文件。
有人可以指出我的正确方向吗?
任何帮助表示赞赏!
答案 0 :(得分:0)
我想知道您是否已在Windows中注册Paho MQTT dll?
您应该将paho-mqtt3c.dll
作为下载的一部分。
我不知道这是否对您有用,但是我遇到了同样的问题(对MQTTClient_create
的未定义引用)...
dll
文件复制到c:/windows/system32
以管理员身份运行CMD Prompt并输入:
regsvr32 i/ paho-mqtt3c.dll
值得一试。
答案 1 :(得分:0)
问题是我正在使用用于64位库的32位gcc编译器来编译程序。安装和使用MinGW64正常。
答案 2 :(得分:0)
我在OS X中遇到了同样的问题。这就是我解决的方法
我在Linux / EC2实例中编译了paho-mqtt库。
安装了所有依赖项:
sudo yum install install build-essential gcc make cmake cmake-gui cmake-curses-gui
sudo yum install 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 = .. / paho.mqtt.c / -DPAHO_MQTT。 .mqtt3as-static.a
make
编译成功。.
此解决方案也适用于OSX。将步骤2替换为 酿造安装cmake doxygen openssl-devel