Paho MQTT在编译期间引发未定义的参考错误

时间:2019-01-03 22:11:44

标签: windows-10 eclipse c mqtt

在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时,编译器找不到该文件。

有人可以指出我的正确方向吗?
任何帮助表示赞赏!

3 个答案:

答案 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中遇到了同样的问题。这就是我解决的方法

  1. 我在Linux / EC2实例中编译了paho-mqtt库。

  2. 安装了所有依赖项:

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

sudo yum install cmake

sudo yum install doxygen graphviz

  1. 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

  2. make

  3. 制作html
  4. 进行安装
  5. LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/home/ec2-user/paho.mqtt.c/src
  6. 导出LD_LIBRARY_PATH = $ LD_LIBRARY_PATH
  7. sudo ldconfig
  8. gcc test1.c -o test1 -lpaho-mqtt3c

编译成功。.

  1. ./ test1

此解决方案也适用于OSX。将步骤2替换为 酿造安装cmake doxygen openssl-devel

相关问题