私は自分の問題をグーグルで検索し、多くのページを見つけましたが、まったく同じ味のページはなく、問題を解決できません。
Magick++ を使用するプログラムがあり、自分の PC では正常に動作しますが、コードを実行しようとしている別のコンピューターでは失敗します。最小限の例は次のとおりです。
#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 です。マシンにルート アクセス権がないため、ソースからビルドし、自宅内の場所にインストールしました (./configure --prefix=/ を使用)。家/... )。私のプログラムを間違ったImageMagickにリンクすることに問題があるかどうかを確認しました(古いシステムもあるため)が、lddはすべて問題ないことを明らかにしました。 convert は、まったく同じライブラリに対してリンクされていることを示しています。