2011-09-07 3 views
2

J'ai ici un simple code de convertisseur d'image en utilisant Magick ++ (interface ImageMagick) bibliothèque. (Eclipse IDE)Magick ++ reliant erreur

#include <Magick++.h> 
#include <string> 
#include <iostream> 

using namespace std; 

using namespace Magick; 

int main(int argc,char **argv) 
{ 
    Image image; 
    image.read("/home/usr1/test.tiff"); 
    image.write("/home/usr1/test.bmp"); 
    return 0; 
} 

I'am faire une compilation croisée avec cible bras-linux. Le code compile avec succès mais sur la partie de liaison, j'ai des erreurs de référence non définies.

/usr/local/lib/libMagick++/libMagickCore.a(dlopen.o)(.text+0x144): In function `vm_open': 
ltdl/loaders/dlopen.c:194: undefined reference to `dlopen' 
/usr/local/lib/libMagick++/libMagickCore.a(dlopen.o)(.text+0x158):ltdl/loaders/dlopen.c:198: undefined reference to `dlerror' 
/usr/local/lib/libMagick++/libMagickCore.a(dlopen.o)(.text+0x16c): In function `vm_close': 
ltdl/loaders/dlopen.c:212: undefined reference to `dlclose' 
/usr/local/lib/libMagick++/libMagickCore.a(dlopen.o)(.text+0x17c):ltdl/loaders/dlopen.c:214: undefined reference to `dlerror' 
/usr/local/lib/libMagick++/libMagickCore.a(dlopen.o)(.text+0x198): In function `vm_sym': 
ltdl/loaders/dlopen.c:227: undefined reference to `dlsym' 
/usr/local/lib/libMagick++/libMagickCore.a(dlopen.o)(.text+0x1ac):ltdl/loaders/dlopen.c:231: undefined reference to `dlerror' 

J'ai utilisé la commande suivante pour compiler le code:

/opt/Mx800SDK/vfitc/cross/bin/arm-linux-g++ -DMx870 -I/opt/Mx800SDK/vfitc/cross/arm-linux/include -I/usr/local/include/ImageMagick -I/opt/Mx800SDK/include -O2 -Wall -c -fmessage-length=0 -fno-strict-aliasing -o'main.o' '../main.cpp' 

et lien:

/opt/Mx800SDK/vfitc/cross/bin/arm-linux-g++ -L/opt/Mx800SDK/lib -L/usr/local/lib/libMagick++ -o'imgConverter' ./main.o -lpthread -lMagick++ -lMagickWand -lMagickCore -ltiff -lz 

est-il une autre bibliothèque que je dois relier avec succès? Suis-je le relier à droite? Merci d'avance.

Répondre

4

Essayez inverser les bibliothèques Magick, ajoutez la bibliothèque MagickWand (et mis libz et d'autres bibliothèques d'images de base à la fin, et la bibliothèque de liens dynamiques pendant que vous y êtes):

... -lpthread -lMagick++ -lMagickWand -lMagickCore -lz -ldl 

Voir Linker Order - GCC pour Pourquoi l'ordre des bibliothèques statiques est-il important?

+0

J'ai essayé de réorganiser les bibliothèques, mais je reçois toujours des erreurs de référence indéfinies (de 500+ à 100). – neztreh

+0

À propos de quelles fonctions? – Mat

+0

J'ai mis à jour la question ci-dessus avec les dernières erreurs que j'ai eues. – neztreh