2017-06-21 210 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。

相關問題