[gelöst] jpg-Bildformat wird nur auf Entwickler-PC unterst..
Verfasst: 10. Dezember 2006 23:15
Hallo,
ich habe dieses Problem zwar bereits ansatzweise in anderen Threads gefunden, allerdings bisher ohne befriedigende Loesung. Falls ich etwas uebersehen haben sollte, bitte ich um Entschuldigung.
Hier die Beschreibung meines Problems:
Ich moechte eine jpg-Datei als QImage-Objekt im Programm verwenden:
Auf dem Rechner, auf dem ich kompiliere, funktioniert das problemlos, d.h. img.isNull() wuerde hiernach "false" liefern.
Wenn ich allerdings das kompilierte Programm auf einen anderen Rechner kopiere, schlaegt der anschliessende isNull()-Test fehl (d.h. liefert "true").
Um herauszufinden, welche DLL fuer jpg-Unterstuetzung benoetigt wird, habe ich auf allen getesteten Systemen die "path"-Umgebungsvariablen umbenannt und die DLLs einzeln ins Verzeichnis der exe-Datei kopiert. Damit das Programm lief, habe ich folgende 3 DLLs gebraucht:
mingwm10.dll
QtCore4.dll
QtGui4.dll
Dabei bin ich auf folgendes kuriose Verhalten gestossen:
Hier der vollstaendige Code, den ich selbst fuer meine Tests verwendet habe:
ich habe dieses Problem zwar bereits ansatzweise in anderen Threads gefunden, allerdings bisher ohne befriedigende Loesung. Falls ich etwas uebersehen haben sollte, bitte ich um Entschuldigung.
Hier die Beschreibung meines Problems:
Ich moechte eine jpg-Datei als QImage-Objekt im Programm verwenden:
Code: Alles auswählen
QImage img("c:/test.jpg");Wenn ich allerdings das kompilierte Programm auf einen anderen Rechner kopiere, schlaegt der anschliessende isNull()-Test fehl (d.h. liefert "true").
Um herauszufinden, welche DLL fuer jpg-Unterstuetzung benoetigt wird, habe ich auf allen getesteten Systemen die "path"-Umgebungsvariablen umbenannt und die DLLs einzeln ins Verzeichnis der exe-Datei kopiert. Damit das Programm lief, habe ich folgende 3 DLLs gebraucht:
mingwm10.dll
QtCore4.dll
QtGui4.dll
Dabei bin ich auf folgendes kuriose Verhalten gestossen:
- Auf dem Entwickler-PC funktionert das jpg-Lesen mit den DLLs von Qt v4.2.1, aber nicht mit denen von v4.2.0.
- Auf meinem Notebook funktioniert es mit den 4.2.1-DLLs nicht, sehr wohl aber mit den DLLs von Version 4.2.0. Ich habe die DLLs mitkopiert, d.h fuer jede Version identische Dateien verwendet.
Hier der vollstaendige Code, den ich selbst fuer meine Tests verwendet habe:
Code: Alles auswählen
#include <QApplication>
#include <QImage>
#include <QMessageBox>
int main( int argc, char *argv[] )
{
QApplication app( argc, argv );
QImage img( "c:/test.jpg" );
if( img.isNull() ){
QMessageBox::information( 0, "jpg test", "can't read jpg" );
} else {
QMessageBox::information( 0, "jpg test", "no problem" );
}
return 0 ;
}