2017-06-21 4 views
2

ich eine QWidgets Anwendung in Qt 5.3.1 und an einigen Stellen habenqDebug() << QSTRING nicht mehr kompilieren

qDebug() << msg; 

verwendet gebaut haben, wo msg ein QString ist. Ich hatte seit einigen Jahren diese Compilieren und laufen habe, aber heute Nacht habe ich beschlossen, es neu zu kompilieren und ich bekam die Nachricht:

D:\devt\myapp\extcoder.cpp:29: error: no matching function for call to 'QMessageLogger::debug()' 
qDebug()<<msg; 
     ^

In der Tat habe ich ein ähnliches Problem in anderen app ich neulich schrieb und durch Experimente dachte ich, ich hätte es behoben, indem ich solche Aufrufe durch qDebug (msg) ersetzte. Aber es sieht so aus, als ob irgendeine Art von Softwarefäule einsetzt! Irgendwelche Ideen? Natürlich ist die Datei mit

beginnt
#include <QDebug> 

dieses Problem I (eine QMainWindow Art) eine Barebones QWidgets Anwendung gebaut Um zu testen, und den einzigen Code, den ich schrieb, war (abgesehen von der # include)

qDebug()<<"Hello world"; 

im MainWindow-Konstruktor. Ich bekomme genau den gleichen Übersetzungsfehler.

+0

Was ist Ihre Qt-Version? – eyllanesc

+0

Ich habe gerade meinen Text bearbeitet: 5.3.1 – user1741137

+0

Haben Sie versucht, Qt neu zu installieren? –

Antwort

0

QDebug &QDebug::operator<<(const QString &s) wird in Qt unterstützt.

Ausgabebeispiel:

QString s; 

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

Ihre Qt-Umgebung muss durchbrochen werden. Bitte überprüfen Sie Ihre Umgebung und installieren Sie Qt bei Bedarf neu.

0

Neuinstallation von Qt gemacht qDebug()<<s Arbeit wieder.

Es war in der Tat eine Art "Software-Fäulnis": Ich habe Qt 5.3.1 neu installiert, nachdem ich eine Kopie des Originals gemacht hatte, damit ich das Neue mit dem Alten vergleichen konnte.

Mit Winmerge konnte ich den Fehler aufdecken: Ich weiß nicht genau, wie es passiert ist, aber die Datei qlogging.h wurde beschädigt. Folgendes ist passiert: In den Zeilen 118 und 120 wurden die Deklarationen von zwei Debug-Versionen in NBIS_debug umgeschrieben. Jetzt habe ich versucht, freie Software aus dem NBIS zu portieren. Irgendwann muss ich eine Debug-Funktion von debug zu NBIS_debug umbenannt haben, und diese Änderung muss bis zum qlogging.h propagiert worden sein.

Verwandte Themen