我收到此错误: 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;
}
答案 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;
}