سؤال

لدي هنا رمز بسيط لتحويل الصور باستخدام مكتبة Magick++(واجهة ImageMagick).(Eclipse IDE)

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

أنا أقوم بتجميع متقاطع باستخدام هدف Arm-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

هل هناك أي مكتبة أخرى أحتاج إلى ربطها بنجاح؟هل أقوم بربطه بشكل صحيح؟شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

حاول عكس مكتبات Magick، وأضف ملف MagickWand المكتبة (وضع libz ومكتبات الصور الأساسية الأخرى في النهاية ومكتبة الروابط الديناميكية أثناء تواجدك فيها):

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

يرى ترتيب الرابط - دول مجلس التعاون الخليجي لماذا ترتيب المكتبات الثابتة مهم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top