在项目中链接 Paho C Mqtt 库错误C++

Linking Paho C Mqtt library error in C++ Project

本文关键字:Mqtt 错误 C++ Paho 项目 链接      更新时间:2023-10-16

我正在尝试将MQTT-C-Client-Library包含在一个简单的C++项目中。我已经成功地包含了头文件,就像这个#include "MQTTClient.h".在 linux 终端中编译它正在打印此错误:

[xy@localhost mosquittoProject]$ sudo g++ *.cpp -o MQTTTest
/tmp/ccHn3s6m.o: In function `main':
mosquitto_test.cpp:(.text+0x11e): undefined reference to `MQTTClient_create'
mosquitto_test.cpp:(.text+0x13f): undefined reference to `MQTTClient_connect'
collect2: error: ld returned 1 exit status

我发现我需要在谷歌搜索后链接库:示例 MQTT 客户端代码不起作用 C

基于这个问题和答案,我尝试再次编译它,如下所示:

sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest

编译正常,但在运行时仍然出现错误。控制台命令和输出:

[xy@localhost mosquittoProject]$ sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest
[xy@localhost mosquittoProject]$ ./MQTTTest 
./MQTTTest: error while loading shared libraries: libpaho-mqtt3c.so.1: cannot open shared object file: No such file or directory

在这篇文章中,我用 xy 替换了实际用户名。

我在这里做错了什么?

问题看起来像库(libpaho-mqtt3c.so.1(不在库路径上。

看起来您正在链接到库的构建位置,并且没有通过运行sudo make install将其安装到默认系统位置(例如/usr/local/lib(。

默认情况下,在 Linux 上,运行时链接器搜索 /etc/ld.so.conf/etc/ld.so.conf.d 中列出的位置。 如果编辑这些,请记住运行sudo ldconfig以更新缓存。

您可以将库的位置添加到LD_LIBRARY_PATH环境变量中,例如:

$ LD_LIBRARY_PATH=/home/xy/Desktop/paho.mqtt.c/build/output/ ./MQTTTest