Seite 1 von 1

ImageFormats Plugins werden nicht geladen

Verfasst: 1. Februar 2007 17:44
von dhcase
Hallo,

ich habe ein Programm, das JPEGs aus dem Internet lädt und anzeigt. Auf dem Entwicklungrechner klappt das auch (Qt installiert), auf anderen Rechnern ohne Qt aber nicht. Das Verzeichnis "imageformats" liegt im Verzeichnis der Anwendung auf dem Zielrechner. Auch addLibraryPath() hilft nicht weiter:

Code: Alles auswählen

QCoreApplication::addLibraryPath(qApp->applicationDirPath().append("/imageformats"));
Hat jemand eine Idee?

Verfasst: 1. Februar 2007 19:01
von Christian81
Mal geschaut was http://doc.trolltech.com/4.2/qcoreappli ... braryPaths alles so zurückbringt? Ausserdem wäre m.E.

Code: Alles auswählen

QCoreApplication::addLibraryPath(qApp->applicationDirPath());
korrekter. Aber das ist ja ein Standardpfad.

Was mir noch einfällt ist, dass ggf. der Build-Key nicht passt. Schau mal mit regedit in HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults um.

Verfasst: 1. Februar 2007 20:43
von dhcase
Danke für die schnelle Antwort, leider geht es immer noch nicht. Ich habe den LibraryPath neu gesetzt mit:

Code: Alles auswählen

	QStringList paths = qApp->libraryPaths();
	paths.append(qApp->applicationDirPath().append("/imageformats"));
	QCoreApplication::setLibraryPaths(paths);
QCoreApplication::libraryPahts() gibt jetzt QtDir/plugins, das Anwendungsverzeichnis und das Anwendungsverzeichnis/imageformats zurück.

In der Registry gibt es u.A. die Einträge

Code: Alles auswählen

HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.1.debug\C:\Qt\4.1.4\plugins\imageformats
HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.1.false\C:\Qt\4.1.4\plugins\imageformats
das müsste doch eigentlich stimmen...

Verfasst: 1. Februar 2007 20:57
von Christian81
Du solltest Dir doch die Registry-keys mal genauer anschauen. Ggf. sind die Plugins im Debug-Mode und dein Executable im Release-Mode gelinkt. Deshalb der Hinweis auf den Build-Key - wenn da was nicht passt lädt Qt die Dlls nicht. Den Registry-Key kann man auch einfach löschen - Qt baut ihn wieder neu auf.

Verfasst: 2. Februar 2007 19:00
von dhcase
Ich habe das Programm jetzt statisch gelinkt und das Plugin eingebunden, dann funktioniert es. Falls es jemand mit ähnlichen Problemen interessiert, hier eine kleine Anleitung:

1. Qt statisch bauen
Eine Anleitung gibt es -->hier (Windows) bzw. -->hier (allgemein)
Das entsprechende Plugin sollte auch angegeben werden

Code: Alles auswählen

configure -static -qt-libjpeg
2. Das .pro-File anpassen
Wenn Plugins statisch dazugelinkt werden, dann müssen sie im .pro-File angegben werden

Code: Alles auswählen

TEMPLATE = app
QTPLUGIN += qjpeg
Weitere Infos -->hier
Evtl. muss noch die Library explizit angegeben werden

Code: Alles auswählen

LIBS += qjpeg.lib
3. Das Plugin importieren
In der main.cpp das Q_IMPORT_PLUGIN-Makro aufrufen

Code: Alles auswählen

Q_IMPORT_PLUGIN(qjpeg)
und den #include nicht vergessen

Code: Alles auswählen

#include <QtPlugin>
4. Das Programm bauen ;)

Code: Alles auswählen

qmake
make
Grüsse,
D.