[QT] 解決unknown QT: mqtt 問題
在使用QT CREATOR開發時,想導入MQTT Module
但QT裡預設沒有MQTT,直接QT += mqtt 會顯示 unknown QT: mqtt
這時就要自己下載並導入到己經建立好的環境
指令
git clone git://code.qt.io/qt/qtmqtt.git
解壓到自己建立好的一個QTMQTT資料夾下
cd qmqtt
../qtmqtt/src/mqtt/
找到qmqttconnection.cpp 這個檔案,並修改內容
將
connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);
註解掉,並加上
connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &QMqttConnection::transportError);
解釋:QAbstractSocket類中沒有errorOccured,都有QAbstractSocket::error,但是QAbstractSocket::error訊號過載,因此要使用功能指向遲接到該訊號,因此需要使用QOverload
執行
git checkout 5.15
記得執行QMAKE時要給與正確的路徑,如果單純執行qmake,依我自己的環境會用../ananconda/下的QMAKE執行,因此我把路徑指到我建立好的qt creator環境下的qmake執行。
sudo /opt/Qt5.14.2/5.14.2/gcc_64/bin/qmake -query QT_INSTALL_LIBS
sudo /opt/Qt5.14.2/5.14.2/gcc_64/bin/qmake
sudo make
sudo make install
這樣就完成了
PS: 如果沒有修改qmqttconnection.cpp這個檔案,在sudo make時會出現以下錯誤喔
/home/username/qtmqtt/src/mqtt/qmqttconnection.cpp:163:39: error: ‘errorOccurred’ is not a member of ‘QAbstractSocket’
163 | connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);
make[2]: *** [Makefile:639: .obj/qmqttconnection.o] Error 1
make[2]: Leaving directory '/home/username/qt-build/src/mqtt'
make[1]: *** [Makefile:47: sub-mqtt-make_first] Error 2
make[1]: Leaving directory '/home/username/qt-build/src'
make: *** [Makefile:49: sub-src-make_first] Error 2
參考 references:
安裝MQTT LIB
https://stackoverflow.com/questions/48701475/qt-creator-adding-mqtt-library/48709563
解決sudo make 時出現在的錯誤
https://www.soinside.com/question/uWmot9dhXJcAxyJgkRD2ZC
留言
張貼留言