QT编译并部署QtMqtt相关环境+跑测demo【超详细教程】

文章目录

  • 概要
  • 整体架构流程
      • ▷下载指定版本的QMqtt源码:
      • ▷编译后同步MQTT相关文件:
  • 技术名词解释
  • 技术实现步骤详解
      • 一、编译源码
        • 1、编译报错
        • 2、解决思路
        • 3、编译通过
      • 二、继续完善mqtt应用环境
        • 1、打开编译生成的shadow build文件夹
        • 2、同步lib
        • 3、同步bin
        • 4、同步mkspecs
      • 三、跑一个Demo进行测试
        • 1、修改.pro
        • 2、编译报错,要修改头文件
        • 3、点击 编译->运行。
        • 4、测试demo
  • 小编有话说

概要

前情提要:要在windows环境下,用QT跑通一个基于MQTT实现的demo。

操作系统:windows
编译器及其版本:QT 5.14.1

Qt版MQTT git源码:【下载地址】https://github.com/qt/qtmqtt
(注意:有版本之分,按编译器版本下载,此处我的是5.14.1)
在这里插入图片描述

整体架构流程

因为QT官方的MQTT并未包含在安装目录下,所以使用它,需要根据源码进行自行编译。
官方已将原代码开源,源码下载地址概要里已经写了,可以自己从 GitHub 拉下来(或下载安装包)来编译。

▷下载指定版本的QMqtt源码:

Github上第一个分支dev对应QT6.0以上版本,所以安装QT5的朋友可能会发生安装出错或者无法使用的情况。
这种情况下,直接在分支列表中寻找和自己qt编译器相同版本的源码,下载它即可。

▷编译后同步MQTT相关文件:

想要在当前环境下自如的使用qmqtt相关库,需要将编译后的MQTT相关文件,放到QT编译器文件夹中。

技术名词解释

  • QT编译器文件夹 : 指的就是QT安装下载的文件夹
  • shadow build文件夹:即QT编译文件自动生成的影子文件,生成的相关文件都在其中。
    (如:build-qtmqtt-Desktop_Qt_5_14_2_MinGW_64_bit-Release)

技术实现步骤详解

【PS:以下路径中出现的 qtmqtt-5.14.1,需要替换成 qtmqtt-<你下载的版本> 】

一、编译源码

1、编译报错

直接对下拉的QMqtt源文件进行编译,发现编译报错如下
在这里插入图片描述

2、解决思路

需要将 qtmqtt-5.14.1\src\mqtt 路径下的所有.h头文件,打包放入一个文件夹中,
装所有.h文件夹的名称指定命名为:QtMqtt。
在这里插入图片描述

将改文件拷贝到QT编译器文件夹中,
此处以我的位置为例: (共两处,分别为32位mingw和64位mingw 的 include文件夹)

D:\Qt\Qt5.14.2\5.14.2\mingw73_32\include
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\include

在这里插入图片描述

3、编译通过

在这里插入图片描述

二、继续完善mqtt应用环境

通过后:
继续处理以下几个文件

1、打开编译生成的shadow build文件夹

在这里插入图片描述
总的来说:
就是要将同版本QT 编译生成的MQTT相关文件夹:bin、lib、mkspecs,同步放到QT编译器文件中。
在这里插入图片描述

2、同步lib

在这里插入图片描述

3、同步bin

在这里插入图片描述

4、同步mkspecs

在这里插入图片描述

三、跑一个Demo进行测试

以源文件中的simpleclient作为demo为例:
相对路径:qtmqtt-5.14.1\examples\mqtt\simpleclient
将该文件夹复制到另外一个工程目录下,进行单独的编译和测试。

1、修改.pro

①先在.pro里面,添加好mqtt模块
②再将指定的生成位置注释掉
在这里插入图片描述

2、编译报错,要修改头文件

此时编译,会提醒你两个位置的头文件有问题
按照图示做一下修改,修改为:

#include <QtMqtt/qmqttclient.h>
// QtMqtt就是刚才将.h头文件放到QT编译器文件中定义的文件夹名称。

在这里插入图片描述在这里插入图片描述

3、点击 编译->运行。

就可以看到demo正常运行的界面。
在这里插入图片描述

4、测试demo

官方提供了 test.mosquitto.org 和 broker.hivemq.com 两个测试地址(目前两个都可以使用)。
可以使用官方的测试地址,也可以使用自己的地址。

点击connect以后,即可进行sub订阅和pub发布
等待中:State Change0…State Change2 表示已连接上。
在这里插入图片描述

小编有话说

此次mqtt的相关学习,来自于几个博主的详细文章,特此感谢!
参考文章:
https://blog.csdn.net/liyuanbhu/article/details/106597506
https://blog.csdn.net/youthshadows/article/details/128813301

最近正在研究mqtt应用的相关方案,接下来可能会陆续出好几篇相关教程。Linux环境下的搭建,正在码文中…
后期更新会把链接放上来。

感兴趣的宝子,可以点个收藏,加个关注哟~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/273354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小程序中拖拽和缩放图片

需求&#xff1a;点击元素后选中&#xff0c;出现缩放按钮&#xff0c;拖动缩放按钮可实现元素的缩放&#xff1b;并且元素本身是可以拖动的。 html&#xff1a; <block wx:for"{{imageControls}}" wx:key"index"><view hidden"{{item.hidd…

vue中 ref 和 reactive 的区别与联系

官方原文&#xff1a;Vue3 建议使用 ref() 作为声明响应式状态的主要API。 ref 用于将基本类型的数据&#xff08;如字符串、数字&#xff0c;布尔值等&#xff09;和引用数据类型(对象) 转换为响应式数据。使用 ref 定义的数据可以通过 .value 属性访问和修改。reactive 用于…

因mathtype原因导致word中ctrl+V复制功能失效的解决办法

因MathType导致Word中ctrlV复制功能失效的解决办法如下&#xff1a; 我们先解决&#xff01; 打开“文件”&#xff0c;找到“选项”&#xff0c;“加载项”。找到MathType安装目录下&#xff08;C:\Program Files (x86)\Microsoft Office\root\Office16\STARTUP&#xff09;…

大创项目推荐 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0…

SpringBoot的热部署

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

超维空间S2无人机使用说明书——52、使用PID算法进行基于yolo的目标跟踪

引言&#xff1a;在实际工程项目中&#xff0c;为了提高系统的响应速度和稳定性&#xff0c;往往需要采用一定的控制算法进行目标跟踪。这里抛砖引玉&#xff0c;仅采用简单的PID算法进行目标的跟随控制&#xff0c;目标的识别依然采用yolo。对系统要求更高的&#xff0c;可以对…

【Redis】一文掌握Redis原理及常见问题

Redis是基于内存数据库&#xff0c;操作效率高&#xff0c;提供丰富的数据结构&#xff08;Redis底层对数据结构还做了优化&#xff09;&#xff0c;可用作数据库&#xff0c;缓存&#xff0c;消息中间件等。如今广泛用于互联网大厂&#xff0c;面试必考点之一&#xff0c;本文…

python3下载手机安卓版,python下载手机版最新

大家好&#xff0c;小编为大家解答python3下载手机安卓版的问题。很多人还不知道python下载手机版最新&#xff0c;现在让我们一起来看看吧&#xff01; 1、先去python官网下载python3的源码包&#xff0c;网址&#xff1a;https://www.python.org/ 1)进去之后点击导航栏的Down…

CentOS系统环境搭建(二十六)——使用nginx在无域名情况下使用免费证书设置https

centos系统环境搭建专栏&#x1f517;点击跳转 文章目录 使用nginx在无域名情况下使用免费证书设置https1.获取SSL证书1.1 生成SSL密钥1.2 生成SSL证书1.3 重命名密钥文件 2.nginx配置https2.1 放证书2.2 修改nginx.conf文件2.2.1 将80端口重定向到4432.2.2 端口443配置ssl证书…

【三维生成】稀疏重建、Image-to-3D方法(汇总)

系列文章目录 总结一下近5年的三维生成算法&#xff0c;持续更新 文章目录 系列文章目录一、LRM&#xff1a;单图像的大模型重建&#xff08;2023&#xff09;摘要1.前言2.Method3.实验 二、SSDNeRF&#xff1a;单阶段Diffusion NeRF的三维生成和重建&#xff08;ICCV 2023&am…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十六:统计报表模块相关功能实现

一、本章内容 本章使用Echarts及DataV实现常用图表、特殊图表、地图及综合图表等图表展示功能。 1. 详细课程地址: https://edu.csdn.net/course/detail/38183 2. 源码下载地址: 点击下载 二、界面预览 三、开发视频 3.1 B站视频地址: 基于VUE3+Layui从

2023.12.25 关于 Redis 数据类型 Hash 常用命令、内部编码、应用场景

目录 Hash 数据类型 Hash 操作命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY HINCRBYFLOAT HSTRLEN Hash 编码方式 理解什么是压缩 Hash 实际应用 Cache 缓存 Hash 数据类型 整体上来说 Redis 是键值对结构&#xff0c;其中 …

【C++高阶(九)】C++类型转换以及IO流

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; C高阶 1. 前言2. C语言类型转换的方式3. C的强制…

5G阅信在教研行业应用场景有哪些?

1、新生入学 新生录用通知、录用信息查看、注意事项&#xff08;入学指引&#xff09; 校园简介 资讯1 秒速达&#xff0c;让信息传达更高效便捷 2、校务服务 可作为校园微服务的新入口 提供学校各专业课表课程查看、校园卡办理、一卡通应…

怎样在win10命令行窗口跑起来mujava

MuJava简介 Java (muJava) 是 Java 程序的变异系统。 它自动生成用于传统突变测试和类级别突变测试的突变体。 Java 可以测试单个类和多个类的包。 用户以对封装在单独 JUnit 类的方法中的被测类的方法调用序列的形式提供测试。 官网地址&#xff1a;Java Home Page 需要下…

正则表达式与bs4选择器筛选论文数准确率之比较

一、正则爬取论文网首页论文标题的示例 import requests import re from bs4 import BeautifulSoupheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36}def get_html(url):try:res…

C# 通过SharpCompress.Archives.Rar解压RaR文件

/// <summary>/// 解压一个Rar文件/// </summary>/// <param name"RarFile">需要解压的Rar文件&#xff08;绝对路径&#xff09;</param>/// <param name"TargetDirectory">解压到的目录</param>/// <param name&…

如何将图片(matlab、python)无损放入word论文

许多论文对插图有要求&#xff0c;直接插入png、jpg一般是不行的&#xff0c;这是一篇顶刊文章&#xff08;pdf&#xff09;的插图&#xff0c;放大2400%后依旧清晰&#xff0c;搜罗了网上的方法&#xff0c;总结了一下如何将图片无损放入论文中。 这里主要讨论的是数据生成的图…

渗透测试(Lab4.2)

配置WebDeveloper的时候遇到一个错误 导入失败&#xff0c;因为 E:…ovf 未通过 OVF 规范一致性或虚拟硬件合规性检查。 请单击“重试”放松 OVF 规范与虚拟硬件合规性检查&#xff0c;并重新尝试导入&#xff1b; 或单击“取消”以取消导入。如果重新尝试导入&#xff0c;可能…

[Angular] 笔记 10:服务与依赖注入

什么是 Services & Dependency Injection? chatgpt 回答&#xff1a; 在 Angular 中&#xff0c;Services 是用来提供特定功能或执行特定任务的可重用代码块。它们可以用于处理数据、执行 HTTP 请求、管理应用程序状态等。Dependency Injection&#xff08;依赖注入&#…
最新文章