前言
前端時(shí)間做了一個(gè)項(xiàng)目,要求在PC端使用QT制作一個(gè)客戶端,用來(lái)接收從單片機(jī)上傳到Onennet的數(shù)據(jù),并且還要下發(fā)指令。當(dāng)時(shí)弄了好幾天,中途遇見了非常多的問(wèn)題,所以寫下這篇文章記錄一下,同時(shí)分享一下自己的經(jīng)驗(yàn)。
我的環(huán)境:QT 5.12.6
難點(diǎn)
總結(jié)下我遇見的難點(diǎn):
1,環(huán)境配置極難,當(dāng)時(shí)光環(huán)境配置這一項(xiàng)就弄了我好幾天
Qt在5,10版本開始支持mqtt,但是也沒(méi)有集成到安裝包里面,需要自己下載編譯。Qt開發(fā)MQTT程序有兩種方式,一個(gè)是Qt官方提供的基于MQTT的封裝,一個(gè)是第三方(EMQ)開發(fā)的用于Qt調(diào)用MQTT的接口,二者使用方法大同小異,并且均提供了源碼
下載
Qt官方在github上提供了源代碼,地址:https://github.com/qt/qtmqtt
第三方的mqtt庫(kù)GitHub地址:https://github.com/emqx/qmqtt
在下載官方庫(kù)文件時(shí)需要注意,要下載與自己版本相符合的程序源碼,像我是5.12.6版本的QT。我就要下載5.12.6版本的mqtt庫(kù)文件
環(huán)境搭建
第一步,編譯構(gòu)建qmqtt源碼
下面我們使用第三方的MQTT庫(kù)來(lái)進(jìn)行環(huán)境搭建,第三方公司的MQTT庫(kù)環(huán)境搭建過(guò)程與官方庫(kù)的環(huán)境搭建過(guò)程基本上都是相同的步驟,只是他們兩方的頭文件名字不太一樣而已。
將第三方的源碼下載后點(diǎn)擊qmqtt.pro

出現(xiàn)這個(gè)界面點(diǎn)紅框即可

后面直接點(diǎn)擊左下角的小錘子進(jìn)行構(gòu)建

有時(shí)候可能會(huì)出現(xiàn)構(gòu)建失敗的提示,這也是我花費(fèi)時(shí)間最多的地方,當(dāng)時(shí)找了許多教程都沒(méi)弄清楚
問(wèn)題
你出現(xiàn)這個(gè)現(xiàn)象可能有一下幾個(gè)原因:
1,需要安裝一個(gè)perl
perl下載地址:https://www.perl.org/get.html
2,你可能需要使用release模式進(jìn)行構(gòu)建
點(diǎn)擊左下角的這個(gè)小顯示器形的圖標(biāo)就可以調(diào)節(jié)模式
3,你的QT版本太低,不支持
這時(shí)候下載一個(gè)更新的,5.10以上版本的
4,此時(shí)開始編譯后會(huì)出現(xiàn)如下類型錯(cuò)誤

接下來(lái)我們將源碼路徑下C:\Users\maogu\Desktop\qtmqtt-5.10\src\mqtt 的所有頭文件復(fù)制,
粘貼到C:\Users\maogu\Desktop\build-qtmqtt-Desktop_Qt_5_10_1_MSVC2013_64bit-Release\include\QtMqtt路徑中,
我在include文件夾中已經(jīng)建好QtMqtt文件夾,(以上路徑僅作參考)
最后一步還要在QtMqtt文件夾下建立private文件夾,將名稱為*_p.h的四個(gè)頭文件存放進(jìn)去。
5,之后若是還出現(xiàn)以下問(wèn)題

這時(shí),我們將所有錯(cuò)誤的包含文件名換為相應(yīng)*.h文件,如下:

之后就可以正常編譯了
構(gòu)建完成后你會(huì)得到一個(gè)文件夾

第二步:部署到QT項(xiàng)目
這里有兩種方法進(jìn)行環(huán)境配置,
第一種是直接在項(xiàng)目中導(dǎo)入外部庫(kù)和頭文件。
第二種是將其以模塊的形式部署到QT的安裝目錄。
其中第二種的好處就是,只需要一次操作,以后需要再用MQTT庫(kù)就可以直接調(diào)用了,不用每次都導(dǎo)入外部庫(kù)
所以在這里我們主要演示第二種
首先,將qmqtt源碼目錄下(qmqtt\src\mqtt)的所有.h后綴的頭文件拷貝,然后打開QT安裝目錄下的include文件夾,創(chuàng)建一個(gè)mqtt目錄,將拷貝的頭文件粘貼進(jìn)去
我的文件目錄如下:D:\QT\5.12.6\mingw73_64

注意:當(dāng)你的QT安裝了不同的編譯環(huán)境時(shí)會(huì)有
之后,將源碼編譯生成目錄下的lib中以下6個(gè)文件拷貝

并粘貼到QT安裝目錄下對(duì)應(yīng)環(huán)境的lib文件夾去
例如D:\QT\5.12.6\mingw73_64\lib
接下來(lái)將源碼編譯生成的bin文件夾下兩個(gè)庫(kù)文件拷貝到Qt安裝目錄的bin中:


之后將編譯構(gòu)建得到的目錄下的\mkspecs\modules-inst中的文件復(fù)制到QT對(duì)應(yīng)安裝目錄中


這樣就配置完成了
以這種方式配置的在新工程中引用只需要引入模塊就可以直接使用了
QT += mqtt
包含頭文件
#include <QtMqtt/QtMqtt>
問(wèn)題
在我配置好使用過(guò)程中出現(xiàn)了一下問(wèn)題:
1,頭文件不對(duì)
這時(shí)候查看你剛剛添加的頭文件具體名字,官方庫(kù)和第三方庫(kù)的頭文件名并不相同
2,顯示找不到頭文件
這時(shí)嘗試自己導(dǎo)入文件試試
新建一個(gè)項(xiàng)目,在項(xiàng)目的.pro文件中右鍵,點(diǎn)擊添加庫(kù)

選擇外部庫(kù)

選擇庫(kù)文件,找到QT安裝目錄相應(yīng)環(huán)境下的lib文件

之后再次運(yùn)行應(yīng)該就沒(méi)有問(wèn)題了
接下來(lái)就是正式的客戶端開發(fā)了,將會(huì)在我下一篇博客發(fā)出,敬請(qǐng)期待
參考文獻(xiàn):
(112條消息) Qt開發(fā)MQTT(一) 之Qt官方Qt MQTT_luoyayun361的博客-CSDN博客
(112條消息) 【QT配置第三方MQTT協(xié)議】_mqtt qt_自然醒歐的博客-CSDN博客
(112條消息) Qt開發(fā)技術(shù):mqtt介紹、QtMqtt編譯和開發(fā)環(huán)境搭建_qt mqtt_長(zhǎng)沙紅胖子Qt的博客-CSDN博客文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-668870.html
代碼分享:http://t.csdn.cn/ufC4W文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-668870.html
到了這里,關(guān)于QT使用MQTT協(xié)議連接ONENET云平臺(tái):智能家居PC客戶端開發(fā)筆記-1 環(huán)境搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!