3

我用谷歌搜索了我的问题并找到了很多页面,但没有一个具有完全相同的风格,我无法解决我的问题。

我有一个使用 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 /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 on convert 显示它与完全相同的库链接。

4

0 回答 0