CPP MQTT Broker代码无法正常工作

时间:2015-03-22 04:23:31

标签: c++ mqtt mosquitto libmosquitto

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

[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 archive中给出的示例代码,但make命令无法编译它们。因此尝试单独编译示例文件,但是在运行它时会给出buffer overflow和mosquito终端输出

[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中尝试过的所有文件,你可以看看here

1 个答案:

答案 0 :(得分:0)

我不时遇到同样的问题。也许迟到的答案也有助于另一个人。 Ubuntu有一个相当古老的mosquitto版本。与此同时,它变成了一个日食项目,并且有些事情发生了变化。

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