ImageFormats Plugins werden nicht geladen

Alles rund um die Programmierung mit Qt
Antworten
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

ImageFormats Plugins werden nicht geladen

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag 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...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag 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.
Antworten