gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:23 26 4
gpt4 key购买 nike

我正在尝试包含 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

谷歌搜索后我发现我需要链接库:Example MQTT Client Code not working 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 

关于c++ - 在 C++ 项目中链接 Paho C Mqtt 库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43427799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com