Магия ++ NoDecodeDelegateForThisImageFormat
Я погуглил мою проблему и нашел много страниц, но ни одна из них не имеет точно такой же вкус, и я не могу избавиться от своей проблемы.
У меня есть программа, которая использует Magick++ и отлично работает на моем ПК, но она не работает на другом компьютере, где я пытаюсь запустить код. Минимальный пример:
#include <iostream>
#include <Magick++.h>
int main(){
Magick::Image im;
im.read( "/fullpathtoimage.jpg" );
std::cout<< im.columns() <<"\n";
return 0;
}
(где, конечно, "/fullpathtoimage.jpg" является допустимым изображением).
Это вызывает исключение:
terminate called after throwing an instance of 'Magick::ErrorMissingDelegate'
what(): ImageMagick: NoDecodeDelegateForThisImageFormat `/fullpathtoimage.jpg' @ constitute.c/ReadImage/503
Aborted
Другие сообщения об этой проблеме в основном говорят, что у них нет делегатов для jpeg, и они должны установить libjpeg и т. Д., Но они получали те же ошибки при запуске 'convert'. Тем не менее, когда я делаю
./convert /fullpathtoimage.jpg temp.png
Работает отлично. дела
./identify -list configure
списки, среди прочего
DELEGATES bzlib mpeg fontconfig freetype jng jpeg pango png ps x xml zlib
LIBS -lfreetype -ljpeg -lpng12 -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lxml2 -lz -lm
а также
./identify -list format | grep JPEG
дает
JNG* rw- JPEG Network Graphics
JPEG* rw- Joint Photographic Experts Group JFIF format (62)
PJPEG* rw- Joint Photographic Experts Group JFIF format (62)
Итак, все вроде нормально, все двоичные файлы работают, просто мой код не работает.
Я установил версию ImageMagick-6.8.7-8, я собрал ее из исходных кодов, поскольку у меня нет root-прав на компьютере, и я установил ее в своем доме (используя./configure --prefix=/ Главная/...). Я проверил, может быть, есть проблема со связыванием моей программы с неправильным ImageMagick (так как есть и более старая системная), но ldd показывает, что все в порядке, т.е. программа связана с той, которую я установил, как я хотел, и запустил ldd на convert показывает, что он связан с точно такими же библиотеками.