[gelöst]QPixmap Laden von File geht schief

Alles rund um die Programmierung mit Qt
Antworten
Tobi
Beiträge: 28
Registriert: 22. April 2007 12:17
Wohnort: Nürnberg
Kontaktdaten:

[gelöst]QPixmap Laden von File geht schief

Beitrag von Tobi »

Hallo Qt'ler,

ich hab hier ein Problem und ich weiß nicht weiter.

Randbedingungen:
Qt OpenSource 4.3.0
Visual Studio 2005 Pro SP1
Windows XP Home/Pro, Vista

Zum Problem:
Ich habe ein kleines Tool geschrieben, das irgendwann Bilder die vom User angegeben werden, in eine QPixmap läd. Das ganze funktionierte immer problemlos. Jetzt ist das Tool fertig und ich hab es "ausgeliefert".

Leider klappt das ganze auf keinem anderen Rechnern. Diese haben alle das Visual C++ SP1 Redistributable Package installiert und bis auf dieses Problem läuft alles einwandfrei.
Jedes mal, wenn ich die QPixmap mit load(QString a_file) laden will, bekomme ich einen Nullpointer zurück. Der übergebene String ist allerdings richtig, das habe ich auf den Rechnern überprüft. Das selbe Problem auf einem XP Home.

Ich habe 2 "Entwicklerrechner" einmal mit XP Pro, einmal XP Home und dort läuft alles ohne Probleme. Aber sobald das Tool auf andere Rechner kommt gehts schief (und zwar nur dieses Detail, alles andere läuft).

Ich liefere mit aus:
das Redistributable Package
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
QtXml4.dll
die manifest Datei


Ich hab jetzt schon eine Weile gesucht, finde aber das Problem nicht. Es scheint auch kein bekannter Bug zu sein.

Jetzt bitte ich euch mir ein paar Tips zu geben. Ich wäre sehr dankbar!

PS: hier der Codeschnippsel

Code: Alles auswählen

bool PictureList::addElement(QString& a_string)
{
   QPixmap l_picture;
   if(!l_picture.load(a_string))
   {
      // hier gehts immer schief
      return false;
   }
   // ...
}
Zuletzt geändert von Tobi am 23. Oktober 2007 19:43, insgesamt 4-mal geändert.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Hängt vielleicht auch davon ab, welches Grafikformat die Datei hat. Denn z.B. für GIF ist soweit ich weiß, immer das entsprechende Plugin zum laden nötig, welches Du aber nicht mitlieferst.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Tobi
Beiträge: 28
Registriert: 22. April 2007 12:17
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Tobi »

Naja, die Dateien werden über ein Dialog ausgewählt, welches nur .jpg Dateien anzeigt. Klar könnte hier eine falsche Endung das Problem verursachen, aber ich habe es mit echten jpg Dateien getestet (den selben die auf dem Entwicklerrechner funktioniert haben).

Also kanns daran eigentlich nicht liegen...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

jpg kann genauso ein Plugin sein... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tobi
Beiträge: 28
Registriert: 22. April 2007 12:17
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Tobi »

Ich glaube ich wurde als Qt Neuling entlarvt :D

Bis auf 2 Optionen (no Qt3 Support, debug and release) hab ich Qt ganz standardmäßig kompiliert. Wird dann die jpg Unterstützung als PlugIn kompiliert? Wenn ja, wie liefere ich diese mit aus (also welche .dll ist für die jpg Unterstützung zuständig)?

Wenn das Problem jetzt so einfach zu lösen wäre, mach ich einen Freudenstanz :wink:

Und vielen Dank für die schnellen Antworten.

Edit: ich hab jetzt mit dem ProcessExplorer nochmal nachgeschaut, und jawohl: sobald die Datei geöffnet wird, wird das PlugIn benötigt und die .dll "qjpeg4.dll" benutzt!

Super, das was... danke nochmal...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde sagen da kannst Du Dich mal belesen: http://doc.trolltech.com/4.3/plugins-howto.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tobi
Beiträge: 28
Registriert: 22. April 2007 12:17
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Tobi »

Ich muss sagen, ich hab noch nie eine so gute Dokumentation wie die von Qt gesehen!

Werd mir den PlugIn Teil mal bei Gelegenheit durchlesen...
Tobi
Beiträge: 28
Registriert: 22. April 2007 12:17
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Tobi »

Hallo, ich hab jetzt die qjpeg4.dll mitgeliefert, liegt also im Verzeichnis mit drin, aber der Fehler kommt immernoch.

Und das Problem ist folgendes: die .dll wird beim Öffnen des Bildes auf einem anderen Rechner garnicht benutzt. Also sieht es so aus als ob er die .dll nicht findet.

Muss ich noch irgendwelche Einstellungen vornehmen damit das Programm die dynamische lib findet?

In der Doku hab ich nämlich auch nix gefunden...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du linkst statisch - da gehen keine dynamischen Libs. Steht doch dort:

[quote Qt-Doku]
To link statically against those plugins, you need to use the Q_IMPORT_PLUGIN() macro in your application and you need to add the required plugins to your build
[/quote]
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tobi
Beiträge: 28
Registriert: 22. April 2007 12:17
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Tobi »

Achso, ich dachte das geht bei den PlugIns auch dynamisch. Wenn ichs auf dem Entwicklugsrechner laufen lasse, gehts ja auch.

Aber ok, danke, ich werds ausprobieren...

Edit:

Also ich bekomme Linker Fehler wenn ich mit dem nötigen include und makro builden will. In der Config hab ich noch, wie in der Doku beschrieben, QTPLUGIN += qjpeg.
Wo liegt da jetzt das Problem?

Edit2:

Hier wurde es gelöst.
Antworten