调试输出:qDebug() << QString不再编译

4

我在Qt 5.3.1中构建了一个QWidgets应用程序,在某些地方使用了

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构造函数中,我得到了完全相同的编译错误。


你的Qt版本是什么? - eyllanesc
我刚刚编辑了我的文本:5.3.1。 - user1741137
你试过重新安装Qt吗? - x squared
3个回答

1
重新安装Qt后,qDebug()<<s又可以正常工作了。
这确实是一种“软件腐烂”:我在复制原始文件的同时重新安装了qt 5.3.1,以便比较新旧版本。
使用Winmerge,我能够发现错误: 我不知道具体是如何发生的,但文件qlogging.h已经损坏。 以下是发生的情况:在第118行和120行,两个版本的debug声明被重写为NBIS_debug。 现在我一直在尝试从NBIS移植自由软件。在某个阶段,我必须将调试函数从debug重命名为NBIS_debug,并且此修改必须一直传播到qlogging.h。

我在我们的Jenkins和我的电脑上遇到了这个错误,但是多台机器上怎么会出现qlogging.h被损坏的情况呢? :( - sayo9394

0

我不得不重新安装Ubuntu和Qt。仅重新安装Qt并没有帮助。


0

QDebug &QDebug::operator<<(const QString &s) 在Qt中受支持。

输出示例:

QString s;

s = "a";
qDebug().noquote() << s;    // prints: a
qDebug() << s;              // prints: "a"

你的Qt环境可能已经损坏,请检查您的环境并在必要时重新安装Qt。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接