一、概述
默认的Qt环境是不能使用MQTT的,但Qt官方提供了基于MQTT的封装,需要通过源码进行编译。
可以在下面的链接中获取到:
https://github.com/qt/qtmqtt
在dev分支中可以选择MQTT版本,选择最新的下载到本地。注意一定要选择对应自己QT版本的MQTT源码 ,我使用的是QT5.14.2,所以MQTT的版本也得是5.14.2.
二、配置环境
1、编译源码库文件
下载下来的是一个Qt项目,在Qt Creator中打开.pro文件,用你所需要的编译器(VS,MinGW…),开始编译。
之后报错如下:
qmqttglobal.h: No such file or directory
解决方法: 在qt安装目录指定编译器的include路径下,新建QtMqtt文件夹。
并且将qtmqtt源码目录中的:src/mqtt/ 目录下的所有头文件拷贝到前面新建的QtMqtt文件夹目录下面。重新编译即可。
完成编译后,可以在你的编译路径的/bin目录中得到所需的动态链接库文件Qt5Mqtt.dll和Qt5Mqttd.dll。前者是release版库,后者是debug版。
2、配置永久项目环境
为了实现一次配置,所有项目可用的目的,我们可以直接将MQTT配置到系统的Qt环境中去。
(1)将编译出来的bin目录中的库文件拷贝到QT安装目录中去
将以上文件拷贝到以下目录中
(2)然后,将源码编译生成目录下的静态链接库相关文件拷贝到Qt安装目录的/lib下,
依次为Qt5Mqtt.lib(.a) Qt5Mqtt.prl Qt5mqttd.lib(.a) Qt5Mqttd.prl。
(3)最后再拷贝模块配置文件到Qt安装目录中。
将以上两个文件夹拷贝到以下目录中
这样MQTT就已经配置到我们本地的Qt环境中了。后续所有使用此Qt环境的项目都可以直接使用MQTT了。
(4)使用方法
使用MQTT时,首先要在.pro中添加模块:
QT += mqtt
在使用前引入包:备注:头文件的名字一定要对上,看了好多资料发现名字有的是大写的
#include <QtMqtt/qmqttclient.h>
编写代码可以参考Qt官方的MQTT说明文档:
https://doc.qt.io/qt-6/qtmqtt-index.html
三、现象
四、参考资料
Qt5.15.2配置qmqtt
编译一个QT MQTT Client
qt 5.14.1 mqtt正常编译分享
Unknown module(s) in QT: mqtt
一文搞懂Qt-MQTT开发