2017-06-21 101 views
2

我在Qt的5.3.1内置了QWidgets应用在一些地方已经使用qDebug()<< QString的不再编译

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"; 
主窗口构造函数中的

。我得到完全相同的编译错误。

+0

你的qt版本是什么? – eyllanesc

+0

我刚刚编辑了我的文本:5.3.1 – user1741137

+0

您是否尝试重新安装Qt? –

回答

0

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

输出例如:

QString s; 

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

你的Qt环境必须被打破。请检查您的环境并在需要时重新安装Qt。

0

重新安装Qt使qDebug()<<s再次工作。

这确实是一种“软件腐”:我使原来的副本,所以我可以比较新与旧后重新安装QT 5.3.1。

使用Winmerge我能够发现错误: 我不知道到底发生了什么,但文件qlogging.h被损坏。 下面是发生了什么:在第118和120行,两个版本调试的声明被重写为NBIS_debug。 现在我一直在尝试从NBIS移植免费软件。在某个阶段,我必须将调试函数从调试重命名为NBIS_debug,并且此修改必须一直传播到qlogging.h。

相关问题