使用QT官方庫實現mqtt客戶端
阿新 • • 發佈:2019-01-26
因為最近一個物聯網專案需要實現各終端狀態採集及接收管理端控制指令,前期網上綜合查了一下,決定採用mqtt協議,服務端採用的是開源的emqtt。客戶端是用qt,網上搜來搜去都是的qmqtt這個第三方庫:https://github.com/emqtt/qmqtt/。
後來在官網查了下發現qt官方從5.10開始已經支援mqtt,但是並沒有整合到安裝版本里。簡單研究了一下發現比較簡單,把實現過程分享一下:
1、用git下載官方原始檔
http://code.qt.io/cgit/qt/qtmqtt.git/
2、編譯(構建),中間提示要安裝perl。
3、從編譯輸出資料夾拷貝lib到專案(2個.a和2個.dll檔案即可)
4、從原始檔的src/mqtt目錄拷貝所有標頭檔案到專案(因為編譯輸出下面的include內只是一個到src的連線)
5、在專案中新增外部庫。新增後結果如下:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/qtmqtt/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/qtmqtt/lib/ -lQt5Mqttd
else:unix: LIBS += -L$$PWD/qtmqtt/lib/ -lQt5Mqtt
INCLUDEPATH += $$PWD/qtmqtt/include
DEPENDPATH += $$PWD/qtmqtt/include
6、在專案檔案中增加network(QT+= core gui network),標頭檔案中包含#include "QMqttClient.h"
7、編譯,在所有編譯提示找不到標頭檔案的地方,把#include <QtMqtt/qmqttglobal.h>這種全部修改為#include "qmqttglobal.h"
8、編譯通過。
附完整原始碼(直接編譯可用,QT5.10.1 MinGW):
後來在官網查了下發現qt官方從5.10開始已經支援mqtt,但是並沒有整合到安裝版本里。簡單研究了一下發現比較簡單,把實現過程分享一下:
1、用git下載官方原始檔
http://code.qt.io/cgit/qt/qtmqtt.git/
2、編譯(構建),中間提示要安裝perl。
3、從編譯輸出資料夾拷貝lib到專案(2個.a和2個.dll檔案即可)
4、從原始檔的src/mqtt目錄拷貝所有標頭檔案到專案(因為編譯輸出下面的include內只是一個到src的連線)
5、在專案中新增外部庫。新增後結果如下:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/qtmqtt/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/qtmqtt/lib/ -lQt5Mqttd
else:unix: LIBS += -L$$PWD/qtmqtt/lib/ -lQt5Mqtt
INCLUDEPATH += $$PWD/qtmqtt/include
DEPENDPATH += $$PWD/qtmqtt/include
6、在專案檔案中增加network(QT+= core gui network),標頭檔案中包含#include "QMqttClient.h"
7、編譯,在所有編譯提示找不到標頭檔案的地方,把#include <QtMqtt/qmqttglobal.h>這種全部修改為#include "qmqttglobal.h"
8、編譯通過。
附完整原始碼(直接編譯可用,QT5.10.1 MinGW):
https://download.csdn.net/download/lostapple/10329950