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 ;
}