我正在尝试在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进行构建和安装,但遇到相同的错误。
请帮助我解决此问题。预先感谢。
实际上QAbstractSocket类中没有errorOccured函数,也许作者忘记了提交一些辅助程序重载...无论如何,都有QAbstractSocket::error,但是QAbstractSocket::error信号过载,因此要使用功能指针连接到该信号,您需要使用QOverload。
打开文件src/mqtt/qmqttconnection.cpp
查找:connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);
并将其更改为:connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &QMqttConnection::transportError);
尝试使用当前分支后仍然出现错误。我尝试另一个分支。
git clone https://github.com/qt/qtmqtt.git --branch 15.3