我在Qt 5.3中构建了一个QWidgets应用程序.1并且在某些地方使用了
qDebug() << msg;
其中msg是QString。 我已经编译并运行了几年,但今晚我决定重新编译它并得到消息:
D:\devt\myapp\extcoder.cpp:29: error: no matching function for call to 'QMessageLogger::debug()'
qDebug()<<msg;
^
事实上,我在前一天写的另一个应用程序中遇到了类似的问题,通过试验我认为我已经通过qDebug(msg)替换这些调用来修复它。 但看起来好像某种软件腐烂了! 有任何想法吗?当然文件以
开头#include <QDebug>
为了测试这个问题,我构建了一个准系统QWidgets应用程序(QMainWindow类),我编写的唯一代码是(除了#include)
qDebug()<<"Hello world";
MainWindow构造函数中的。我得到了完全相同的编译错误。
答案 0 :(得分:0)
QDebug &QDebug::operator<<(const QString &s)
输出示例:
QString s;
s = "a";
qDebug().noquote() << s; // prints: a
qDebug() << s; // prints: "a"
您的Qt环境必须破坏。请检查您的环境并在需要时重新安装Qt。
答案 1 :(得分:0)
重新安装Qt使qDebug()<<s
再次工作。
这确实是一种“软件腐烂”:我在制作了原版的副本后重新安装了qt 5.3.1,所以我可以将新版本与旧版本进行比较。
使用Winmerge我能够发现错误: 我不确切知道它是如何发生但文件qlogging.h已损坏。 这是发生的事情:在第118和第120行,两个版本的调试声明被重写为NBIS_debug。 现在我努力尝试从NBIS移植免费软件。在某些阶段,我必须将调试函数从debug重命名为NBIS_debug,并且此修改必须一直传播到qlogging.h。
答案 2 :(得分:0)
我不得不重新安装Ubuntu和Qt。仅重新安装Qt没有帮助。