为什么在blitting时allegro会崩溃?这些调试报告意味着什么?

时间:2014-08-10 22:56:43

标签: c++ bitmap allegro

我使用code :: blocks中的allegro库在c ++中编程。我声明了一个位图,加载了位图并blit图像以测试位图是否被绘制到屏幕中。我编译了这个程序,编译器发现没有错误。当我运行该程序时,位图不会被绘制到屏幕上,并且快板崩溃了。我改变了颜色深度并确保我在代码中包含了一些不会导致allegro崩溃的东西,但仍无济于事。然后我运行调试,看看这个程序是否有问题。我收到这条消息:

    sigsegv segmentation fault

    #0 10004DDD colorconv_blit_24_to_15() (C:\Windows\SysWOW64\alleg42.dll:??)
    #1 0028FE3C ?? () (??:??)
    #2 1006C3E0 get_uformat() (C:\Windows\SysWOW64\alleg42.dll:??)

这是什么意思,我该如何解决?这有什么解决方案吗? 这是我的代码:

$

  #include <allegro.h>

    using namespace std;

int main()
{
allegro_init();
install_keyboard();
set_color_depth(8);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);

BITMAP *link=NULL;
link=load_bitmap("cave.bmp",NULL);

blit(link,screen,0,0,0,0,25,177);

readkey();

destroy_bitmap(link);
allegro_exit();

return 0;
}
END_OF_MAIN()

1 个答案:

答案 0 :(得分:0)

解决!!!

我弄清楚为什么快板崩溃了。我使用Gimp编辑我的位图,然后将其加载到code :: blocks中的allegro上。对于每个人使用旧的allegro库加载他们的位图,不要使用Gimp。使用任何其他图像编辑软件,如paint.net。

更新: 我用gimp实验了我的位图,事实证明当我将图像导出为位图时,另一个弹出窗口显示了兼容性选项和高级选项。对于使用allegro库的每个人,请忽略顶部。你可以使用Gimp,但是当你点击&#34; export,&#34;单击兼容性选项左侧的加号,该选项将下拉并单击那个表示&#34;不写颜色空间信息&#34;然后单击导出。这应该工作,并加载allegro罚款。