在QT C++中安装MQTT时出现错误QAbstractSocket

Error QAbstractSocket while installing MQTT in QT C++

本文关键字:错误 QAbstractSocket MQTT QT C++ 安装      更新时间:2024-05-23

我正试图在Ubuntu中为QT C++构建和安装QMqtt。我执行了以下命令,但出现了错误。

git clone https://github.com/qt/qtmqtt.git
mkdir qtmqtt-build
cd qtmqtt-build
qmake ../qtmqtt/qtmqtt.pro

然后在输入命令之后

make

我收到一个错误

/home/atn/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/atn/qt-build/src/mqtt'
make[1]: *** [Makefile:47: sub-mqtt-make_first] Error 2
make[1]: Leaving directory '/home/atn/qt-build/src'
make: *** [Makefile:49: sub-src-make_first] Error 2

我也尝试过从QtCreator构建和安装,但得到了相同的错误。

请帮我解决这个问题。提前谢谢。

在尝试当前分支后仍然出现错误。我尝试另一个分支。

git clone https://github.com/qt/qtmqtt.git --branch 15.3

事实上,在QAbstractSocket类中没有errorOccured函数,也许作者忘记了提交一些助手重载。。。无论如何都有QAbstractSocket::error,但QAbstract Socket:,error信号过载,所以要使用函数指针连接到这个信号,需要使用QOoverload。

打开文件src/mqtt/qmqttconnection.cpp

查找:

connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);

并将其更改为:

connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &QMqttConnection::transportError);

您缺少qtbase5 private dev:中的私有标头

sudo apt install qtbase5-private-dev