Seite 1 von 1
[gelöst] Linker-Error bei Q_INIT_RESOURCE
Verfasst: 31. Oktober 2007 14:28
von Nemesis
Hallo!
Bin Anfängerin bei der (Qt-)Programmierung und will eine .ui Datei in ein QFile laden und öffnen. Habe eine .qrc Datei erstellt und will die mittels Q_INIT_RESOURCE einbinden. Beim builden bekomme ich dann folgende Fehlermeldung:
QtUiToolsd.lib(properties.obj): fatal error LNK1202 ".....\vc60.pdb" is missing debugging information for referencing module
Damit kann ich leider nicht so wirklich was anfangen

Vielleicht kann mir da ja jemand weiterhelfen?
Verfasst: 31. Oktober 2007 14:37
von Korgen
Q_INIT_RESOURCE wird nur bei statischen Librarys benötigt. Ist das bei dir der Fall?
Die UI datei hast du deinem .qrc File hinzugefügt und versuchst sie nun über QFile file(":/myuifile.ui") zu öffnen?
Außerdem versuch mal ein "Clean Solution" oder "Projektmappe bereinigen" und dann einen neuen Build. Besteht das Problem dann weiterhin?
Verfasst: 31. Oktober 2007 14:47
von Nemesis
Die UI datei hast du deinem .qrc File hinzugefügt und versuchst sie nun über QFile file(":/myuifile.ui") zu öffnen?
Genau das ist mein Ziel

Ähm, die erste Frage kann ich leider nicht beantworten, verstehe sie nicht so richtig
Ich dachte ich brauche das generell wenn ich eine .ui-Datei verwenden will.
Verfasst: 31. Oktober 2007 14:50
von Korgen
ok, wenn du die Frage nicht verstehst, dann geh ich davon aus, dass du eine "normale" exe Datei erstellen willst und keine .lib oder .dll oder sowas in der Richtung.
Dann bracuhst du das INIT_RESOURCE nicht:
Zitat Qt Hilfe:
"The Q_INIT_RESOURCE() macro is necessary on some platforms for resources stored in a static library."
Was mich allerdings interessieren würde, warum du eine ui Datei in ein .qrc packst und dann via QFile öffnen willst (das hört sich nicht nach Qt Neuling an

)?
Verfasst: 31. Oktober 2007 15:00
von Nemesis
Ja, ich will nur eine exe erstellen.
Was mich allerdings interessieren würde, warum du eine ui Datei in ein .qrc packst und dann via QFile öffnen willst (das hört sich nicht nach Qt Neuling an )?
Das mache ich aus dem Grund, aus dem ich auch das Makro verwendet habe: Ich suche mir in Dokus was zusammen, von dem ich denke dass ich es brauche. Naja, und das hab ich bei den Beispielen gefunden, die bei dem Qt dabei sind.
Also eigentlich will ich einfach nur den Inhalt einer .ui Datei, der sich zur Laufzeit ändern könnte, in meinem Dialogfenster anzeigen.
Schon mal besten Dank für die schnelle Hilfe. Werde mir dann mal einen anderen Weg dafür überlegen

Verfasst: 31. Oktober 2007 15:08
von Korgen
wenn du die .ui Datei in die .qrc Datei packst, dann wird der Inhalt der .ui Datei beim Erstellen der .exe hart in dein Projekt kompiliert. Wenn du dann nachträglich was an der .ui änderst, merkt dein Programm davon nichts, da es nur auf die Resource zugreift, die in die .exe kompiliert ist.
Zu deinem Problem:
lade die Datei nicht aus der Resource sondern direkt vom Dateisystem ( QFile file( "C:\\myFile.ui" ) ).
.ui Dateien sind, soweit ich weiß, XML Dateien, deshalb solltest du dir QXMLReader und QXMLStreamReader anschauen.
Grüße
Verfasst: 4. November 2007 22:56
von Nemesis
Besten Dank, das werde ich dann so machen

Verfasst: 5. November 2007 11:11
von Nemesis
Habe meinen Code jetzt so umgeändert, dass ich die Datei direkt vom Dateisystem lade. Außerdem benutze ich den QUiLoader:
QFile file("C:\\myform.ui");
QUiLoader loader;
file.open(QIODevice::ReadOnly);
QWidget* myWidget = loader.load(&file);
file.close();
myWidget->show();
Leider bekomme ich immer noch dieselbe Fehlermeldung wie zuvor.
Verfasst: 6. November 2007 07:55
von Korgen
den Linker Error LNK1202?
Hast du das Projekt wie oben beschrieben mal bereinigt und 'nen komplett neuen Build gestartet?
Verfasst: 6. November 2007 10:09
von Nemesis
Ja, hatte ich gemacht.
Aber jetzt habe ich den Fehler umgehen können. Hatte bisher mit dem Studio 6 entwickeln müssen, konnte dann aber jetzt doch das 2005er nehmen, und da habe ich den Fehler nicht mehr
Aber trotzdem nochmals besten Dank für die Unterstützung.
Verfasst: 6. November 2007 13:31
von Sephral
hiho,
die Änderung des UI-Files kannst du mit dem "QFileSystemWatcher" erkennen und dann Dein Fenster aktualisieren.
Ciao,
Sephral