基于Qt mqtt库的客户端实现

Qt开发MQTT程序有两种方式;

  • Qt官方已经提供了基于MQTT的封装,但是并没有正式加入到Qt的标准库中,需要自己进行编译添加;
  • 基于第三方EMQ开发的MQTT接口;

本文主要介绍第一种方式,即使用Qt官方的MQTT封装库,我们将编译MQTT库,并测试一个官方的Demo。

下载地址

Qt已经在GitHub上托管了相应的MQTT库的代码,地址:https://github.com/qt/qtmqtt

这个库是基于MQTT V3.1和V3.1.1实现的,这里要注意协议版本。

如上图所示,这里有很多分支;

测试环境

Win10+QtCreator + MinGW-W64

QT版本:Qt5.14.01

MQTT库版本:5.14.02

编译QtMqtt库

D:\Qt\Qt5.14.2\5.14.2\mingw73_64\include(安装目录上和帮助里面看到的版本不一致,我不知道为什么)

在Qt的安装目录下新建QtMqtt文件夹;

然后将qtmqtt-5.14.02路径下的文件复制到新建的路径下;

具体的实际路径要根据自己的安装情况为主。

这时候我们重新回到qtmqtt-5.14.02路径下,打开qtmqtt.pro,就可以进行编译了;

 

这里可以编译成Debug和Release模式,

  • 编译成功之后就可以找到 Qt5Mqtt.dll复制到bin目录下

  • 复制lib下的文件到安装目录lib下

 这时候,我们可以打开simple mqtt client项目进行测试了,路径如下所示;

这时候已经可以进行编译了,但是会发现有还两个报错情况:

第一个报错信息如下:

Unknown module(s) in QT: mqtt

无法识别mqtt模块;

解决方案如下:

 将qt_lib_mqtt.pri文件和qt_lib_mqtt_private.pri复制到Qt的安装路径下的mkspecs\modules路径中即可 

第二个报错息如下:

QMqttClient does not exist

原因是头文件无法找到,做出如下修改;

//#include <QMqttClient>
#include <QtMqtt/qmqttclient.h>

再次编译运行,程序可以正常运行。

简单总结一下:

  • 库版本和位置是否放置在相应编译工具链目录下。
  • 头文件是否对应到类名文件,并放置到编译工具链目录下。
  • modules-inst下的pri文件是否放置到编译工具链目录的相应目录下, QT +=mqtt 能否正常工作都依赖目录里的pri文件。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值