记困扰了两天的QtMqtt库交叉编译过程

本文详细介绍了如何下载QtMqtt交叉编译包,进行交叉编译,并将编译后的动态链接库应用于QT项目。步骤包括:下载源码、配置编译、复制头文件和库文件、修改工程配置以及使用QMqttClient连接MQTT服务器的示例代码。通过此教程,开发者可以成功集成并使用QtMqtt库进行MQTT通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下载QtMqtt交叉编译包

https://github.com/qt/qtmqtt

本文用的是5.12版本

二、交叉编译QtMqtt

使用QtCreator打开下载的交叉编译包在这里插入图片描述
先编译一下
进入这个文件夹,复制一下的这些头文件
在这里插入图片描述
然后进入工程目录的编译文件夹中Debug或者Release都行
复制一份到这里
在这里插入图片描述
然后QtMqtt文件夹里面也复制一份
最后编译一次
在这里插入图片描述

三、使用编译成功的QtMqtt动态链接库

进入Debug或者Release中的lib文件夹复制下面的文件
在这里插入图片描述
到你自己的QT项目
建立这两个文件夹
在这里插入图片描述
把刚刚复制的那几个文件复制进lib里面去
在这里插入图片描述
然后复制之前那些头文件进include/QtMqtt
在这里插入图片描述

四、引入库

在工程的pro文件中这里需要加一个network
在这里插入图片描述
添加QtMqtt库

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqttd

添加头文件inlcude

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

最终成果
在这里插入图片描述

五、使用QMqttClient连接MQTT服务器

引入头文件

#include "QtMqtt/qmqttclient.h"

初始化QMqttClient对象、异步连接回调、接收消息异步回调

protected:
     QMqttClient *pMqttClient;//mqtt服务器对象
protected slots:
    void connected_isr();//连接回调函数
private slots:
    void recv_message(QByteArray message);//接收消息回调

实例化QMqttClient对象

pMqttClient=new QMqttClient(this);

连接mqtt服务器

    pMqttClient->setHostname(IP地址);
    pMqttClient->setPort(1883);
    pMqttClient->connectToHost();

连接异步槽

connect(pMqttClient,&QMqttClient::connected,
                this,&Widget::connected_isr);
connect(pMqttClient,&QMqttClient::messageReceived,
                this,&Widget::recv_message);

编写异步函数

//成功连接回调
void Widget::connected_isr()
{
    qDebug()<<"Connected successfully!";
    pMqttClient->subscribe(QMqttTopicFilter("test"));//订阅频道
}
//收到消息回调
void Widget::recv_message(QByteArray message)
{
    qDebug()<<message;
}

需要发布消息的时候这样发布消息

 QString topic="test";//发布的频道
 QString payload="123456";//消息内容体
 pMqttClient->publish(QMqttTopicName(topic),payload.toLocal8Bit());//发布消息

效果
在这里插入图片描述

结束

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值