[gelöst][Qt4] JPEG statisch linken

Verschiedenes zu Qt
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

[gelöst][Qt4] JPEG statisch linken

Beitrag von Esleborn »

hi,
mittlerweile hab ich es endlich hinbekommen mit Visual Studio 2003 statisch kompilierte Qt Programme zu erzeugen, nur leider bekomm ich einfach nicht hin, dass er "jpeg-Support" eincompiliert... nur über plugins die (wie bekannt) bei statisch kompilierten Versionen nicht unterstützt werden...

einer ne Idee wie ich Qt dazu bekomme jpeg support einzucompilieren? (qt-jpeg ist die momentane configure Option dazu)

Elgrimm Esleborn
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

in der Pro Datei:
QTPLUGIN += qjpeg
Außerdem in deinem Source:
#include <QPictureFormatPlugin>
und
Q_IMPORT_PLUGIN(QJpegPlugin);
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

super...
bis auf den linker Fehler:

Code: Alles auswählen

[...] Nicht aufgelöstes externes Symbol '"class QObject * __cdecl qt_plugin_instance_QJpegPlugin(void)" (?qt_plugin_instance_QJpegPlugin@@YAPAVQObject@@XZ)', verwiesen in Funktion '"public: __thiscall StaticQJpegPluginPluginInstance::StaticQJpegPluginPluginInstance(void)" (??0StaticQJpegPluginPluginInstance@@QAE@XZ)'
jep die Pro file ist bearbeitet

und könntest du mir vllt auch noch sagen, warum der statische build anders aussieht als der dynamische??? Das ist mir völlig unerklärlich...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Und auch neu ausgeführt? Und ist das jpeg Plugin statisch gebaut?

Der Unterschied liegt darin, dass die Plugins statisch gebaut werden, aber dennoch Plugins bleiben. Außerdem kann man ja nicht wissen, ob du jpeg brauchst oder nicht. Macht die ganze Sache ein wenig mehr dynamisch.

Der Fehler ist, dass das jpeg Plugin nicht gelinkt wird. Aber meine Ausführung ist vollständig.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

FlorianBecker hat geschrieben:Und auch neu ausgeführt?
jep aber tut net...
FlorianBecker hat geschrieben:Und ist das jpeg Plugin statisch gebaut?
beinhaltet was?
FlorianBecker hat geschrieben:[...]Der Fehler ist, dass das jpeg Plugin nicht gelinkt wird. Aber meine Ausführung ist vollständig.
Soweit versteh ich es ja noch

Was den Unterschied von Dynamischer und statischer Version betrifft:
ich meine die Darstellung... von bestimmten Widgets...
Zuletzt geändert von Esleborn am 29. Mai 2006 00:52, insgesamt 1-mal geändert.
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Achso, ja, weil er die config von Qt nicht beachtet.

Unter Windows sollte es allerdings gewohnt aussehen.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

naja ich hab hier zwei Versionen, die dynamische und die statische...

abgesehen davon dass die statische keine jpeg anzeigt (mittlerweile obigen linker Fehler produziert), sehen sie auch einfach anders aus... Die statische umrahmt alle QAbstractItemView Abkömmlinge im Gegensatz zur dynamischen, die das - wie gewünscht - nicht tut... frag mich nicht warum...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ich nehme an, dass du die Windows Version nutzt. Im Verzeichnis plugin vom Build muss unter imageformats das qjpegplugin als lib liegen, allerdings wesentlich größer als bei dem shared build. Statisch eben.

Hast du mal geschaut, ob er wirklich gegen das Plugin linkt bei der ausführlichen Ausgabe? Ich denke, er findet das Plugin bei dir nicht, dazu hatte ich mal einen Workaround, aber da ich es nicht wirklich brauchte, weil es bei mir ging...

Ich versuche es zu erklären, denn die eigentliche Lösung weiß ich nicht mehr. Du musst zu den LIB Pfad den Pfad für die imageformsts hinzufügen. Mit QT_INSTALL_PLUGINS kommst du schon mal soweit und dann musst da noch imageformats anfügen. Allerdings könnte das einfach darauf zurückzuführen sein, wenn das QTDIR nicht richtig gesetzt ist. Sicher bin ich mir jedoch nicht. Am Besten, du postest mal die ausführliche Ausgabe, wenn er linkt, da kann ich dir sicherlich relativ schnell weiterhelfen.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

FlorianBecker hat geschrieben:Ich nehme an, dass du die Windows Version nutzt. Im Verzeichnis plugin vom Build muss unter imageformats das qjpegplugin als lib liegen, allerdings wesentlich größer als bei dem shared build. Statisch eben.
Ja leider benutz ich grad win... jep die qjpegplugin lib (qjpeg.lib) liegt drin und ist deutlich größer...

Er linkt nicht gegen das Plugin - versucht es scheints erst gar nicht. Der Fehler oben ist die gesamte Ausgabe (abgesehen von ein paar Warnings von anderen Stellen und dem üblichen (s.u.))

Code: Alles auswählen

Kompilieren...
main.cpp
Verknüpfen...
[...Warnungen die damit nichts zu tun haben...]
main.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"class QObject * __cdecl qt_plugin_instance_QJpegPlugin(void)" (?qt_plugin_instance_QJpegPlugin@@YAPAVQObject@@XZ)', verwiesen in Funktion '"public: __thiscall StaticQJpegPluginPluginInstance::StaticQJpegPluginPluginInstance(void)" (??0StaticQJpegPluginPluginInstance@@QAE@XZ)'
release\Hoerbie_s.exe : fatal error LNK1120: 1 unaufgelöste externe Verweise

Das Build-Protokoll wurde unter "file://[...]\release\\BuildLog.htm" gespeichert.
Hoerbie_s - 2 Fehler, 7 Warnung(en)
Falls dich die Buildlog interessiert, die ist angehängt, aber ich seh nicht wirklich mehr Informationen...
Dateianhänge
BuildLog.h
.html frisst er nicht, also als .h :)
(6.76 KiB) 178-mal heruntergeladen
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

oh doch sie steht drin... aber die falsche... qjpeg1.lib statt qjpeg1.lib...

ist gefixt... danke für die Hilfe
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Kein Thema. Ich versuche ja zu helfen, wo ich kann.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

vllt kannst du mir erklären...
woher kommt der Unterschied (qt412Dynmaic, qt413Static) (siehe Bilder)

ist so bei allen QAbstractView... (den schwarzen "Rahmen" meine ich)

PS: Ja ich spiel ne Menge mit verschiedenen Paintern, etc rum
Dateianhänge
dynamic_korrekt.jpg
dynamic_korrekt.jpg (27.11 KiB) 8366 mal betrachtet
static_falsch.jpg
static_falsch.jpg (31.76 KiB) 8366 mal betrachtet
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

und warum er die falsche lib will kannst du auch nicht erklären, oder?
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Aus dem Stegreif leider nicht. Aber benenne die richtige Lib doch einfach in die die er linken will um, oder kopiere die dahin, eigentlich ziemlich egal. Aber ich kenne das es nervt manchmal und erscheint überflüssig.

Diesen Fehler hatte ich noch nicht.

So, warum es Unterschiede gibt. Als erstes würde mir die Qt Version einfallen und alles weiter kann man nur noch am Lebenden Object herausfinden, spekulieren würde da nicht helfen.

Also ich sags wie es ist. Keine Ahnung, ohne es nicht selbst probiert zu haben.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

ok ist die Qt Version (verglichen mit dynamisch qt413)
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Antworten