2009-07-14 9 views
1

J'ai commencé à utiliser Qt Creator récemment et cela semble fonctionner correctement. Un exemple d'application que je construis sur OS X utilise la bibliothèque ImageMagick.Problème avec la liaison des bibliothèques ImageMagick en utilisant MinGw sur Windows

Pas de problème, tout fonctionne comme prévu. J'ai construit les bibliothèques ImageMagick à partir de la source.

Maintenant, je me déplace vers le côté Windows et les problèmes de liaison commencent. Qt Creator sur Windows utilise MinGW et pas le compilateur de Microsoft, mais la bibliothèque ImageMagick a été compilée avec VC.

En bref - Je ne peux pas relier les bibliothèques préconfigurés sous Windows contre mon projet Qt Creator à l'aide gcc

Cela signifie que je dois recompiler les bibliothèques ImageMagick utilisant MinGW, mais je ne l'ai jamais utilisé GCC sous Windows avant. Comment exécuter ./configure?

ImageMagick est fourni avec "sources Windows", mais elles sont toutes personnalisées pour VisualStudio.

Quelqu'un peut-il aider? Quelqu'un a déjà lié la bibliothèque ImageMagick dans leur programme Qt Creator sur Windows?

Merci,

Dj.

+0

Je me suis pointé à MSYS (un shell unix sur les fenêtres similaires à Cygwin) et je maintenant réussi à compiler la bibliothèque en utilisant le même compilateur que Qt Creator utilise. L'éditeur de liens trouve maintenant la bibliothèque, mais ce n'est toujours pas bon. Je reçois le texte suivant ... mingw32-make: quittant le répertoire 'c:/Technologie Evaluations/Qt/MagickTest ' lib/libMagick ++ un (Image.o). En fonction' ZN6Magick5Image12channelDepthEN10MagickCore11ChannelTypeE': c:/Bibliothèques/ImageMagick-6.5.4-2/​​Magick ++/lib/Image.cpp: 540: référence indéfinie à '_imp__GetExceptionInfo ' ... Ceci continue pendant un moment avec d'autres fonctions ... –

Répondre

0

Vous devez créer un lien avec plus que libMagick ++. libMagickCore.a pour les démarreurs, et probablement libMagickWand.a, ainsi que plusieurs dépendances (celles-ci dépendent de la manière dont vous avez compilé IM), telles que -lz -ltiff -ljpeg -lpng12 -lgdi32 -lpthread -lfreetype.

Matthew

+1

Matthew, Je peux compilez les mêmes sources sur OS X par exemple et reliez-les en liant simplement dans libMagick libMagick lui-même lie ces autres dépendances pendant qu'elles sont construites. Par conséquent, cela n'a aucun sens de les lier à nouveau (comme c'est évidemment le cas sous OS X) J'ai renoncé à cela car cela n'en valait pas la peine et les développeurs ne semblent pas se soucier de compiler sous Windows. Dommage car la bibliothèque semblait prometteuse. Qt lui-même semble avoir assez de support d'image pour l'instant pour compléter ce sur quoi je travaillais. Merci. –

+0

La liaison fonctionne différemment sur OS X et Windows. Je ne sais pas grand-chose sur OS X, mais en supposant que c'est comme Linux, il peut résoudre les définitions de symboles au moment de l'exécution. Sous Windows, ils doivent tous être définis au moment de la compilation. Par conséquent, vous devez lier toutes les bibliothèques. –

+0

> "il peut résoudre les définitions de symboles lors de l'exécution" Nous parlons de bibliothèques statiques, pas dynamiques. Rien ne se passe à l'exécution si vous liez tout de manière statique. De plus - si le problème était seulement au moment de l'exécution - l'application compilait très bien, puis se bloque au moment de l'exécution (par exemple sur Windows vous compileriez, mais si DLL manque, l'application ne démarrera pas). "La liaison fonctionne différemment sous OS X et Windows" En quoi est-ce différent? Je ne suis pas au courant des différences si on utilise le même compilateur? Pouvez-vous me donner plus d'informations? –

Questions connexes