QtXml Konsolenprogramm
-
Hi, ich möchte ein kleines Konsolenprogramm schreiben, dass aus einer XML Datei Informationen ausließt und daraus eine Textdatei erstellt. Mit Qt und XML hab ich noch nicht allzu viel Erfahrung. Hab bisher versucht, mit Tutorials das Laufen zu lernen. Aber nun:
#include <QtCore/QCoreApplication> #include <iostream> #include <stdio.h> #include <QFile> #include <QtXml/QDomDocument> using namespace std; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); cout << "Open XML file ..." << endl; QDomDocument doc; QFile file("test.xml"); if (file.open(QIODevice::ReadOnly)) { cout << "XML file opened." << endl; if (doc.setContent(&file)) { cout << "XML file parsed." << endl; } file.close(); } else { cout << "XML file could not be opened." << endl; } return a.exec(); }
Wenn ich das Compiliere, bekomm ich bei QDomDocument doc und beim return den Fehler "undefined reference to '_imp__ZN12QDomDocumentD1Ev'". Auch bei der Verwendung von doc bekomm ich so einen Fehler, aber mit einer anderen Referenz. Was bedeutet das und was mach ich falsch?
-
Das heißt, dass du vergessen hast, dein .pro zu aktualisieren
Da gehört eine Zeile mit "QT += xml" rein.
-
So richtig intuitiv ist das ja nicht, ne....
Aber jetzt geht's, danke.
-
heimchen schrieb:
So richtig intuitiv ist das ja nicht, ne....
Durch das QT += xml sorgst du dafür, dass a) die Header gefunden werden (include-path wird erweitert), und b) Gegen die libQtXml gelinkt wird. Man kann über die QT-Variable im .pro sehr schön entscheiden, welche Funktionalität man von Qt braucht und damit Compilezeit- und Laufzeitabhängigkeiten einschränken/erweitern.
Für dich interessant:
Du hast ein Konsolenprogramm. Das heißt überlicherweise, dass man auf Gui-Funktionalität verzichtet. Füge folgende Zeile in dein .pro ein, und du brauchst kein QtGui mehr:QT -= gui
-
Das hat mir der Creator schon automatisch eingefügt.
Wenn man das weiß, ist das sicherlich eine sinnvolle Sache