目前QT使用MQTT库的方法有两种:
https://github.com/qt/qtmqtt
https://github.com/emqx/qmqtt
两个版本存在一定差异
在Windows平台编译使用官方MQTT的例子已经有博客介绍了,可以参考以下两个博客:
https://blog.csdn.net/luoyayun361/article/details/104671603
编译前需要注意的问题:3、4中的错误很可能为编译了不对应QT版本的Qmqtt库,可在官方github分支中查找自己QT对应的版本。在这里我使用的是QT5.8.0版本编译官方库,所以我使用了最接近QT5.8.0的版本qtmqtt-5.12版本。
按照对应版本的QTMQTT库进行编译一般不会出现错误,实测完成1、2中的错误修改后编译完成,成功提取lib文件。
解决方法为:在QT的安装目下include文件夹下创建QtMqtt文件夹,例如 Qt\5.8\mingw53_32\include\QtMqtt将源文件src/mqtt下所有.h头文件添加到我们创建的QtMqtt文件夹。
问题的主要原因是:编译器是按照在Qt安装目录下搜索的,但我们文件是我们自己随意放的目录下的 src\mqtt 路径下。
原文:https://blog.csdn.net/qq_39280795/article/details/105455436
connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);
就是这句出了问题。查帮助文档或者源代码都可以发现 QAbstractSocket 没有 errorOccurred 这个 信号。有的那个信号叫:void error(QAbstractSocket::SocketError socketError)
所以要改写成:connect(socket, static_cast<void(QAbstractSocket::*)(QAbstractSocket::SocketError)> (&QAbstractSocket::error),
this, static_cast<void(QMqttConnection::*)(QAbstractSocket::SocketError)>(&QMqttConnection::transportError) );
原文:https://blog.csdn.net/liyuanbhu/article/details/106597506
4.错误qmqttconnection.cpp:1455: error: ‘class QList’ has no member named ‘resize’
此错误为QT6的QMQTT类中成员,使用了QT5编译,当然无法找到。使用老版本QT需要在github仓库中选择对应版本的分支。
5.编译运行官方例子simpleclient.pro中出现的问题:error: QMqttClient: No such file or directory此错误可以将
#include <QMqttClient>
改为
#include <qmqttclient.h>
此外还会出现error: QtMqtt/QMqttClient: No such file or directory
此错误可以将
#include <QtMqtt/QMqttClient>
改为
#include <qmqttglobal.h>
https://luoyayun361.blog.csdn.net/article/details/104699062
Windows上QT5.8按照此教程没有出现错误。1.编译qtmqtt,勾选release,注意kit套件版本,要和winQT版本对应上,一般ubuntu系统会自带QT,注意安装使用配套Win上写的程序的QT版本。
2.编译会出现和Win上同样的错误QtMqtt/qmqttglobal.h: No such file or directory。
此时可按照win上qtmqtt教程一样在qt的安装目录/opt/Qt5.8.0/5.8/gcc_64/include目录下新建QtMqtt文件夹,将源码文件qtmqtt-5.12/src/mqtt中的.h头文件复制到其中。
3.再次编译成功,会在源码文件夹中找到lib文件夹下的lib文件,替换windows下编好程序的lib库(.a,.dll文件)。
4.相比在win上的程序还需在程序的.pro文件中多加入一段else:unix:!macx: LIBS += -L$$PWD/lib/ -lQt5Mqtt
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqttd
else:unix:!macx: LIBS += -L$$PWD/lib/ -lQt5Mqtt
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
5.编译win上移植过来的程序运行成功
https://blog.csdn.net/wct3344142/article/details/107022706
Go原生就支持连接数据库,所以在使用 Golang 开发时,当需要数据库交互时,即可...
Greediness(贪婪型):最大匹配 X、X*、X+、X{n,} 是最大匹配。例如你要用 “....
本文实例讲述了正则表达式中的操作符及说明。分享给大家供大家参考,具体如下: ...
ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里...
2月23日消息 据外媒 Windows Latest 今日报道,借助 Windows 10 Sun Valley 更新...
这些日子一直在简书上使用markdown写作,已经渐渐的痴迷于这种简洁纯粹的写作方...
橡皮擦一个逗趣的互联网高级网虫。 观前提醒本篇文章涉及知识点巨大建议先收藏再...
从另一台机器上复制过来的项目,由于两台机器的库目录不一致,导致了stdio.h等很...
3月22日消息 外媒 Winfuture 报道,此前微软面向 Insider 预览用户公布了 Window...
1 . 目标 演示下图的git reset 各选项的效果。 2. Git Reset操作说明 图中说明:...