一、paho库
官网介绍:
paho分支介绍及下载
Paho MQTT C Client Library
Paho Asynchronous MQTT C Client Library
GitHub下载地址:
https://github.com/eclipse/paho.mqtt.c
https://github.com/eclipse/paho.mqtt.cpp
(一)paho.mqtt.c的编译
1、cmake的配置
第四讲:编译Paho C Windows客户端
基于paho.mqtt.c库实现QT封装调用
Windows10下VS2017编译MQTT C与编译MQTT C++
openssl下载:http://slproweb.com/products/Win32OpenSSL.html
2、问题的解决
build目录应该在源码目录下新建,不能到外面新建。install目录也在src下
CMake编译的VS工程,安装时遇到错误:error MSB3073: 命令“setlocal
还有一个找不到时paho-mqtt3as.lib的错误,一个是在项目属性里的链接器->输入->依赖项中将其中的s去掉,因为生成的库是paho-mqtt3as.lib;另一个是到CMakeList文件中查找mqtt3as,将其中的s去掉。
(二)paho.mqtt.cpp编译
第五讲:编译Paho C++ Windows客户端
VS2019编译MQTT库 C/C++(超详细,含示例工程)
1、解决错误:error in configuration process ,project files may be invalid
完美解决CMake时“could not find any instance of Visual Studio”的问题
受其启发,把cmake相关的两个组件安装上就可以了。
2、使用的错误
关于编译报错 error: cannot convert ‘const std::__cxx11::basic_string’ to ‘const char*’ 的处理
二、Qt的mqtt库
有两种:Qt MQTT和QMQTT。本人最终选择的是qmqtt。
Qt官方:Qt MQTT
EMQ第三方:QMQTT
Qt MQTT之服务器介绍
MQTT连接阿里云IoT(一)
MQTT连接阿里云IoT(二)
MQTT连接阿里云IoT(三)
MQTT连接阿里云IoT(四)
mqtt 客户端搭建 流程记录(通信猫)
(一)qmqtt编译过程
github下载:https://github.com/emqtt/qmqtt
下面将编译的过程记录如下:
1、在最外层的qmqtt.pro中加入,因为windows不支持gtest
load(qt_parts)
CONFIG += NO_UNIT_TESTS
2、在src/qmqtt/qmqtt.pro中加入
CONFIG += NO_UNIT_TESTS
CONFIG += QMQTT_WEBSOCKETS
3、编译生成
4、将生成目录中的lib文件夹和src目录下的mqtt文件夹拷入Qt工程目录。
(二)qmqtt库的使用
本人主要编译的是QMQTT,调用过程真是漫长,主要卡在m_client->connectToHost();调用了但一直没有连接上,没有触发connected信号,还报了Timer不能在子线程中调用什么的,一直以为是编译的有问题,其实是库的调用有问题,Debug调用的是Release库导致没有连接上。(编译时的debug和release,和生成的libQt5Qmqtt.a和libQt5Qmqttd.a什么关系?)
看了很多,最后是这篇文章给了我启发:QT 用第三方库来实现MQTT客户端
做了以下两步,能成功连接了(起作用的是第二步)。
第一步:
将编译生成的两个 xx.dll 文件,移动到 xxx.exe执行应用的同一目录下(为可执行文件添加动态链接库.dll)
第二步:(Debug程序不能使用Release库,各用各的)
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Qmqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Qmqttd
INCLUDEPATH += $$PWD/mqtt
DEPENDPATH += $$PWD/mqtt
(三)qmqtt使用例子
Qt实现MQTT客户端–MQTT调试助手(qmqtt)