Ich habe eine Qt-Anwendung, die einige eingebettete JPG-Dateien enthält, die ich anzeigen möchte. Wenn ich sowohl die Debug- als auch die Release-Versionen auf meinem Computer kompiliere und ausführe, funktioniert alles einwandfrei. Wenn ich die Anwendung auf einen USB-Stick kopiere und von dort auf meinem Rechner starte, funktioniert es einwandfrei. Auf dem USB-Stick und einem anderen Entwickler-Rechner: OK. Auf dem Thumb-Laufwerk auf einem dritten, nicht-Entwickler-Maschine: keine Bilder!Eingebettete JPG-Ressourcen, die nicht in der Qt-Anwendung geladen werden
proj.pri
RESOURCES += ./proj.qrc
proj.qrc:
<RCC>
<qresource prefix="/myApp">
<file>Gui/Resources/logo.jpg</file>
<file>Gui/Resources/another_image.jpg</file>
</qresource>
</RCC>
main.cpp:
{
...
QImage *logo = new QImage(":/myApp/Gui/Resources/logo.jpg");
QImage *image = new QImage(":/myApp/Gui/Resources/another_image.jpg");
myClass *d1 = new myClass("Some Text", 48, 30, logo);
myClass *d2 = new myClass("Some More Text", 48, 30, another_image);
...
}
Ich habe bestätigt, dass die Bilder durch Kommentare aus der RESOURCES Linie in der PRI-Datei zu der ausführbaren Datei hinzugefügt werden. Die Größe der Binärdatei sinkt um die Größe der Bilder plus ein Bit; Wenn ich die Anwendung starte, erscheinen die Bilder nicht. Ich verzichte auf die RESOURCES-Zeile und alles funktioniert wie oben beschrieben.
Was fehlt mir hier? Eine DLL auf dem Nicht-Entwickler-Rechner? Ein
Umwelt:
- Win XP
- Qt 4.6.1
- Visual Studio 2008
- Qt Creator 1.3.1
Ich habe dies schon einmal erlebt und das ist die Lösung, auf die ich gestoßen bin. OP, beachten Sie, dass die Verzeichnisstruktur von Bedeutung sein kann. –
BTW, kopiert imageformats/qjpeg4.dll in root (wie im obigen Beispiel) und verließ qt.conf und root/plugins. – dwj
Ja, das könnte ein wenig überflüssig sein, aber ich erinnere mich nicht, genaue Reihenfolge der Suche Qt tut :). – Eugene