2014-01-19 48 views
0

我是Allegro的新手。我们必须在我们的研究中使用它。 我的代码有问题,应该加载一个位图并打印出来。来自Allegro的load_bitmap之后的神秘崩溃

#include <allegro.h> 
int main(void) 
{ 
    allegro_init(); 
    install_keyboard(); 
    set_color_depth(16); 
    set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0); 

    BITMAP *Bild; 
    if((Bild=load_bitmap("Spielfeld_Rand.bmp", NULL)) == NULL) 
    { 
     allegro_message("Error"); 
     return 1; 
    } 
    while(!key[KEY_ESC]) 
    { 
     draw_sprite(screen, Bild, 0,0); 
    } 
    destroy_bitmap(Bild); 

    return 0; 
} 
END_OF_MAIN() 

该代码崩溃。我没有看到任何错误消息,我的屏幕变黑,我什么也做不了。我也试图进入图片的完整路径,但它不会帮助。

但是,如果我删除ifrourou,程序中止并返回到sceen。

任何人都可以帮助我解决这个神秘的崩溃问题吗?

非常感谢。

+0

'END_OF_MAIN()'??? o.O - 同样,调试器说了什么。 – 2014-01-19 15:40:58

+0

END_OF_MAIN()是allegro特有的。我用gdb测试它,但它也没有错误地崩溃。 –

回答

1

set_gfx_mode会将您的屏幕分辨率更改为640x480并显示黑屏。

该手册说,不要在图形模式下使用allegro_message。它可能被调用并锁定程序。

在文本模式下,allegro_message将在其中放置一个带有“错误”的对话框。程序然后不会退出,直到选择好。

您应该在退出之前调用allegro_exit,否则您的屏幕将保留为640x480分辨率。