CPP MQTT Broker代码不工作

CPP MQTT Broker code not working

本文关键字:工作 代码 Broker MQTT CPP      更新时间:2023-10-16

我需要在我的一个项目中使用mqtt broker。但我觉得文件非常缺乏。我发现的一些可用的示例代码并不适合我。遵循这个示例,但出现了编译错误

[subho@localhost] taboo $  g++ mqtt.cpp -o a
/tmp/ccg9xcFV.o: In function `myMosq::myMosq(char const*, char const*, char const*, int)':
mqtt.cpp:(.text+0x31): undefined reference to `mosqpp::mosquittopp::mosquittopp(char const*, bool)'
mqtt.cpp:(.text+0x41): undefined reference to `mosqpp::lib_init()'
mqtt.cpp:(.text+0x9c): undefined reference to `mosqpp::mosquittopp::connect_async(char const*, int, int)'
mqtt.cpp:(.text+0xa8): undefined reference to `mosqpp::mosquittopp::loop_start()'
mqtt.cpp:(.text+0xb9): undefined reference to `mosqpp::mosquittopp::~mosquittopp()'
/tmp/ccg9xcFV.o: In function `myMosq::~myMosq()':
mqtt.cpp:(.text+0xf5): undefined reference to `mosqpp::mosquittopp::loop_stop(bool)'
mqtt.cpp:(.text+0xfa): undefined reference to `mosqpp::lib_cleanup()'
mqtt.cpp:(.text+0x106): undefined reference to `mosqpp::mosquittopp::~mosquittopp()'
mqtt.cpp:(.text+0x12c): undefined reference to `mosqpp::mosquittopp::~mosquittopp()'
/tmp/ccg9xcFV.o: In function `myMosq::send_message(char const*)':
mqtt.cpp:(.text+0x1b0): undefined reference to `mosqpp::mosquittopp::publish(int*, char const*, int, void const*, int, bool)'
/tmp/ccg9xcFV.o:(.rodata._ZTI6myMosq[_ZTI6myMosq]+0x10): undefined reference to `typeinfo for mosqpp::mosquittopp'
collect2: error: ld returned 1 exit status

还试图查看mqtt归档中给出的示例代码,但make命令未能编译它们。因此,尝试单独编译样本文件,成功了,但在运行时出现缓冲区溢出,蚊式终端输出为

[subho@localhost] Web_App $ (master) mosquitto
1426996368: mosquitto version 1.3.5 (build date 2014-10-16 10:32:53+0000) starting
1426996368: Using default config.
1426996368: Opening ipv4 listen socket on port 1883.
1426996368: Opening ipv6 listen socket on port 1883.
1426996369: New connection from 127.0.0.1 on port 1883.
1426996369: New client connected from 127.0.0.1 as tempconv (c1, k60).
1426996369: Socket error on client tempconv, disconnecting.
1426997037: New connection from 127.0.0.1 on port 1883.
1426997037: New client connected from 127.0.0.1 as tempconv (c1, k60).
1426997037: Socket error on client tempconv, disconnecting.
1426997314: New connection from 127.0.0.1 on port 1883.
1426997314: New client connected from 127.0.0.1 as tempconv (c1, k60).
1426997314: Socket error on client tempconv, disconnecting.

如果有人以前使用过mqtt,并且可以共享一个基本代码,那就太好了。谢谢我已经推送了我在github中尝试的所有文件,你可以在这里看看。

我不时遇到同样的问题。也许迟来的答案对另一个答案也有帮助。Ubuntu有一个相当古老的蚊子版本。与此同时,它变成了一个eclipse项目,有些事情发生了变化。

如果安装了linux发行版的mosquitto包,库文件将进入/usr/lib,则会出现此问题。为了获得头文件,必须下载源代码,如果调用make-install,则更改了函数名或命名空间的新库将进入/usr/local/lib。因此链接了错误的库。