我使用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()
答案 0 :(得分:0)
解决!!!
我弄清楚为什么快板崩溃了。我使用Gimp编辑我的位图,然后将其加载到code :: blocks中的allegro上。对于每个人使用旧的allegro库加载他们的位图,不要使用Gimp。使用任何其他图像编辑软件,如paint.net。
更新: 我用gimp实验了我的位图,事实证明当我将图像导出为位图时,另一个弹出窗口显示了兼容性选项和高级选项。对于使用allegro库的每个人,请忽略顶部。你可以使用Gimp,但是当你点击&#34; export,&#34;单击兼容性选项左侧的加号,该选项将下拉并单击那个表示&#34;不写颜色空间信息&#34;然后单击导出。这应该工作,并加载allegro罚款。