2009-07-14 19 views
1

Ich habe kürzlich mit Qt Creator gearbeitet und es scheint gut zu funktionieren. Eine Beispielanwendung, die ich unter OS X erstellt habe, verwendet die Bibliothek ImageMagick.Probleme beim Verknüpfen von ImageMagick-Bibliotheken mit MinGw unter Windows

Keine Probleme dort - alles funktioniert wie erwartet. Ich habe die ImageMagick-Bibliotheken aus der Quelle erstellt.

Jetzt gehe ich auf die Windows-Seite und die Verbindungsprobleme beginnen. Qt Creator unter Windows verwendet MinGW und nicht den Compiler von Microsoft, aber die ImageMagick-Bibliothek wurde mit VC kompiliert.

Kurz gesagt - ich kann die vorkompilierte Bibliotheken auf Windows gegen mein Qt Creator-Projekt verknüpfen gcc

Das bedeutet, ich habe die ImageMagick-Bibliotheken mingw neu zu kompilieren, aber ich habe noch nie GCC unter Windows verwendet. Wie laufe ich ./configure?

ImageMagick wird mit "Windows-Quellen" geliefert, die jedoch alle auf VisualStudio zugeschnitten sind.

Kann jemand helfen? Wer hat schon die ImageMagick-Bibliothek in ihr Qt-Creator-Programm unter Windows eingebunden?

Danke,

Dj.

+0

Ich habe deutete auf MSYS (ein Unix-Shell auf Fenster ähnlich wie Cygwin) und ich es geschafft, jetzt die Bibliothek mit dem gleichen Compiler zu kompilieren, wie Qt Creator verwendet. Der Linker findet jetzt die Bibliothek, aber es ist immer noch nicht gut. bekomme ich folgende ... mingw32-make: Verlasse Verzeichnis 'c:/Technik Auswertungen/Qt/MagickTest ' lib/libmagick ++ a (Image.o.): In der Funktion 'ZN6Magick5Image12channelDepthEN10MagickCore11ChannelTypeE': c:/Bibliotheken/ImageMagick-6.5.4-2/​​Magick ++/lib/Image.cpp: 540: undefinierter Verweis auf '_imp__GetExceptionInfo ' ... Dies geht für eine Weile mit anderen Funktionen ... –

Antwort

0

Sie müssen mit mehr als nur libMagick ++ verknüpfen. LibMagickCore.a für Starter, und wahrscheinlich libMagickWand.a, sowie einige Abhängigkeiten (diese hängen davon ab, wie Sie IM kompiliert haben), wie zum Beispiel -lz -liff -ljpeg -lpng12 -lgdi32 -lpthread -lfreetype.

Matthew

+1

Matthew, kann ich kompilieren Sie die gleichen Quellen zum Beispiel unter OS X und verlinken Sie sie einfach durch Verknüpfung in libMagick libMagick selbst verbindet diese anderen Abhängigkeiten, während es gebaut wird. Daher macht es keinen Sinn, sie erneut zu verlinken (wie es offensichtlich in OS X der Fall ist). Ich gab das auf, da es die Mühe nicht wert war und die Entwickler scheinen sich nicht um das Kompilieren unter Windows zu kümmern. Schade, denn die Bibliothek sah vielversprechend aus. Qt selbst scheint genug Image-Unterstützung zu haben, um das zu ergänzen, woran ich gerade gearbeitet habe. Danke. –

+0

Die Verknüpfung funktioniert unter OS X und unter Windows anders. Ich weiß eigentlich nicht viel über OS X, aber unter der Annahme, dass es wie Linux ist, kann es Symboldefinitionen zur Laufzeit auflösen. Unter Windows müssen sie alle zur Kompilierzeit definiert werden. Daher müssen Sie alle Bibliotheken verknüpfen. –

+0

> "es kann Symboldefinitionen zur Laufzeit auflösen" Wir sprechen über statische Bibliotheken, nicht dynamisch. Zur Laufzeit passiert nichts, wenn Sie alles statisch verknüpfen. Darüber hinaus - wenn das Problem nur zur Laufzeit war - die Anwendung würde gut kompilieren, dann stürzt zur Laufzeit ab (zum Beispiel auf Windows würden Sie es kompilieren, aber wenn dll fehlt die App nicht gestartet wird). > "Verknüpfung funktioniert unter OS X und unter Windows" Wie ist das anders? Mir sind keine Unterschiede bekannt, wenn man den gleichen Compiler verwendet? Kannst du mir mehr Informationen geben? –

Verwandte Themen