ImageMagick的未处理异常

时间:2014-02-24 17:27:49

标签: c++ imagemagick

我收到此错误: sampleappm.exe中0x76abc41f处的未处理异常:Microsoft C ++异常:Magick :: ErrorBlob在内存位置0x004cf1c8 .. 当我执行以下代码时:

#include <Magick++.h> 
#include <iostream> 
using namespace std; 
using namespace Magick; 

int main(int argc,char **argv) 
{ 
    InitializeMagick(*argv);
    Magick::Image image("100x120", "linen");
    image.fillColor("black");
    image.write("test.png");// if i comment this line there is no more error at the execution
    return 0; 
}

2 个答案:

答案 0 :(得分:0)

我建议您捕获Magick实现抛出的异常Exception,将其写入cout并尝试弄清楚发生了什么:

#include <Magick++.h> 
#include <iostream> 
using namespace std; 
using namespace Magick; 

int main(int argc,char **argv) 
{ 
    InitializeMagick(*argv);
    Magick::Image image("100x120", "linen");
    try {
        image.fillColor("black");
        image.write("test.png"); // this line causes the error
    } catch (const Exception& e) {
        cout << e.what() << endl;
    }
    return 0; 
}

您在原始示例中看到的错误只会告诉您MS的运行时库无法处理此异常类型。

答案 1 :(得分:0)

我做了一些更改来处理异常,这段代码对我有用,在VC ++ 2013 64bit上编译。

这是输出test.png

还要确保您具有写入权限,因为ErrorBlob是IO子系统错误。

#include <Magick++.h> 
#include <iostream> 
using namespace std; 
using namespace Magick; 
int main(int argc,char **argv) 
{ 
  InitializeMagick(*argv);

  try { 
    Image image("100x120", "linen");
    image.fillColor("black");
    image.write("test.png");
  } 
  catch( Exception &error_ ) 
    { 
      cout << "Caught exception: " << error_.what() << endl; 
      return 1; 
    } 
  return 0; 
}