在QT C++中安装MQTT时出现错误QAbstractSocket
Error QAbstractSocket while installing MQTT in QT C++
我正试图在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
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'