Seite 1 von 1
Plugins unter VC++ importieren
Verfasst: 24. März 2008 19:19
von mathies
Hallo,
ich habe, wie schon öfters hier diskutiert, ein Problem mit *.jpg Bildern, wenn ich mein Programm in einem anderen Pfad starte als dem, wo die *.exe erstellt wurde. Mit *.png Dateien habe ich keine Probleme.
Ich habe jetzt schon die qjpeg4.lib mit eingebunden und die zugehörige *.dll in das Hauptverzeichnis meines Programms kopiert. Ohne Erfolg. Auch das ändern des Bibliothekspfads mit QApplication::addLibraryPath("./pfad"); oder QCoreApplication::addLibraryPath("./pfad"); brachte keine Änderung.
Eine *.pro Datei verwende ich bei meiner VC++ Umsetzung nicht. Nutze ich Q_IMPORT_PLUGIN(qjpeg) bekomme ich nicht aufgelöste Verweise.
Hat jemand noch eine Idee?
Danke,
Matthias
Verfasst: 24. März 2008 19:27
von Christian81
Linkst du statisch oder dynamisch?
Q_IMPORT_PLUGIN ist nur für statische Plugins nötig. Für dynamische Plugins ist nur
dies nötig.
Verfasst: 24. März 2008 19:41
von mathies
Da ich die OpenSource Variante nicht explizit als statisch übersetzt habe, denke ich doch mal, dass ich alles dynamisch linke, auch wenn die Libs in dieser Version genau so groß sind wie die Dlls.
#include <QPictureFormatPlugin> hilft aber leider auch nicht
Fraglich ist für mich noch, warum alles funktioniert, wenn ich die *.exe direkt im Release Ordner starte?
Verfasst: 24. März 2008 19:44
von Christian81
Verfasst: 24. März 2008 20:06
von mathies
Ich dachte eigentlich, dass ich das hätte. Ich habe jetzt einfach mal pauschal alle Plugins ins Verzeichnis meines Programms kopiert und
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath());
gesetzt. Keine Änderung.
Hab ich jetzt was falsch verstanden in dem Text?

Verfasst: 24. März 2008 20:12
von Christian81
But where is the plugins directory? When the application is run, Qt will first treat the application's executable directory as the pluginsbase. For example if the application is in C:\Program Files\MyApp and has a style plugin, Qt will look in C:\Program Files\MyApp\styles
Außerdem hatten wir das hier schon zig mal.
Verfasst: 24. März 2008 20:40
von mathies
Ok, hab die Pfade überlesen die in der Tabelle standen, dann macht der Text natürlich bissl mehr Sinn. Funktioniert aber trotzdem nicht auch wenn ich die Plugins unter "../MyApp/pictureformats" habe.
Verfasst: 24. März 2008 20:43
von Christian81
Ist ja auch kein QPictureFormatPlugin - zumal das beim Qt compilieren ja schon alles in den korrekten Verzeichnissen landet...
Verfasst: 24. März 2008 20:58
von mathies
Tschuldigung fürs nicht verstehen aber ich habe eigentlich schon alles durch, auch
../MyApp/imageformats mit
#include <QImageIOPlugin>, keine Änderung. Funzt alles nur aus dem Release Ordner...

Verfasst: 24. März 2008 21:01
von Christian81
Was soll ein "#include <QImageIOPlugin>" helfen?
Es funktioniert so wie es beschrieben ist. Wenn nicht -> Foren suche - wir hatten das Problem schon öfters.
Verfasst: 24. März 2008 21:07
von mathies
Ok, danke. In den bisherigen Einträgen im Forum wird das Problem mit zusätzlichen Einträgen in der *.pro Datei "gelöst". Da ich aber qmake nicht benutze ist diese Datei für mich nicht relevant, wie anfangs geschrieben.
Ich such weiter, danke nochmal.
Verfasst: 24. März 2008 21:10
von Christian81
Was hat ein Image-Plugin mit der pro-Datei zu tun? Du kompilierst nicht dynamisch - das haben wir doch nun schon raus, oder?
http://doc.trolltech.com/4.3/deployment.html
Verfasst: 25. März 2008 11:21
von mathies
Wieso linke ich statisch wenn ich die *.dlls benutze? Ich brauche ja auch nur noch die *.dlls wenn ich das Programm auf einem Rechner ohne Qt laufen lassen will.
Hab Qt eben mal statisch übersetzt - wie vermutet nur noch *.libs, keine einzige *.dll mehr. Naja, trotzdem danke fürs antworten, arbeite ich halt nur mit png...
Verfasst: 25. März 2008 11:24
von Christian81
Fehler von mir - es sollte heissen 'Du kompilierst nicht statisch'
Aber auch diesen Fall hatten wir hier schon und ist auch in den beiden Links, die ich gegeben habe, sehr gut beschrieben.