2011-09-07 18 views
2

我這裏使用Magick ++(ImageMagick的接口)庫。(Eclipse的IDE)Magick ++連接錯誤

#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; 
} 

我'做與臂-Linux目標橫編譯一個簡單的圖像轉換器的代碼。代碼編譯成功,但在鏈接部分,我得到了未定義的引用錯誤。

/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' 

我用下面的命令編譯代碼:

/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' 

和鏈接:

/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 

是否有任何其他圖書館,我需要它成功地聯繫起來?我是否正確地鏈接?提前致謝。

回答

4

嘗試反轉Magick庫,添加MagickWand庫(並把libz進行等基礎圖像庫底,並且動態連接庫,而你在它):

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

爲見Linker Order - GCC爲什麼靜態庫的順序很重要。

+0

我嘗試重新排序庫,但我仍然收到未定義的參考錯誤(從500 +降到100)。 – neztreh

+0

關於什麼功能? – Mat

+0

我已經更新了上面的問題,並收到了最新的錯誤。 – neztreh