文档出现乱码怎么回事?(文档为什么突然乱码了)
936
2022-05-30
前言
上一篇分享了:《简单认识认识mqtt及mosquitto》,但也只是分享了mqtt的一些概念及mosquitto的一些介绍。这不,就有读者来催更了:
这一篇我们就来分享mqtt应用于进程间通信的实例。我们沿用《例说嵌入式实用知识之JSON数据》这篇文章的综合demo来改造改造。那个综合demo的功能是这样子的:
这是以socket来作为进程间通信的方式,并且这个demo是基于Windows写的,需要包含Windows特定的头文件。
本篇笔记我们把上面这个综合demo改为:
我们用mqtt来作为进程间通信的方式,在Linux下进程测试。
先贴代码:
json_print进程源码
json_print.c:
json_parse进程源码
json_parse.c:
编译运行
1、编译生成json_parse、json_print程序:
gcc cJSON.c json_parse.c -L ../mosquitto/build/lib -lmosquitto -o json_parse gcc cJSON.c json_print.c -L ../mosquitto/build/lib -lmosquitto -o json_print
这里用到链接动态库的方式生成可执行程序。关于动态链接与静态链接,可查看往期笔记:《静态链接与动态链接补充(Linux)》、《什么是动态链接与静态链接?》。
2、执行json_parse、json_print程序:
执行这两个程序会报错:
./json_parse: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory /json_print: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
这是因为 不能找到共享库文件libmosquitto.so.1,加载失败。
因为一般情况下Linux会在/usr/lib路径中搜索需要用到的库,而libmosquitto.so.1库并不在这个路径下。
解决方法有两种:一种就是把这个文件拷贝至/usr/lib路径下,但是一般不允许这样做,一般用户也不允许往这个路径里拷贝东西。另一种就是把libmosquitto.so.1库所在路径增加为动态库的搜索路径,命令为:
export LD_LIBRARY_PATH=../mosquitto/build/lib:$LD_LIBRARY_PATH
关于这方面的说明可以阅读往期笔记:《静态链接与动态链接补充(Linux)》
按照上述方法添加动态库搜索路径之后就可以正常运行这两个程序:
ParseResult.txt文本里得到:
实验成功!
以上就是本次的分享,代码写得比较仓促,如有错误,麻烦指出,谢谢!由于准备demo花了挺多时间,包括注释也写了很多。所以本篇文章就不做过多的说明,感兴趣的朋友可以结合本篇文章的demo及mosquitto/client/pub_client.c、mosquitto/client/sub_client.c这两个源文件。
本篇文章的demo:
可在本公众号聊天界面回复关键词:json_mqtt_demo,即可获取,若无法获取可联系我进行获取。
【拜托了,物联网!】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/299476
IoT MQTT 任务调度
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。