【问题标题】:mysterious crash after load_bitmap from Allegro来自 Allegro 的 load_bitmap 后的神秘崩溃
【发布时间】:2014-01-19 15:39:00
【问题描述】:

我是 Allegro 的新手。我们必须在学习中使用它。 我的代码有问题,应该加载位图并打印出来。

#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()

代码崩溃。我没有看到任何错误消息,我的屏幕变黑了,我什么也做不了。我也试过输入图片的完整路径,但是没有用。

但如果我删除load_bitmap 周围的if,程序将中止并返回到屏幕。

谁能帮我解决这个神秘的崩溃问题?

非常感谢。

【问题讨论】:

  • END_OF_MAIN()??? o.O——还有,调试器说了什么。
  • END_OF_MAIN() 是 allegro 特定的。我用 gdb 测试它,但它也崩溃了,没有错误。

标签: c bitmap allegro


【解决方案1】:

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

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

在文本模式下,allegro_message 会弹出一个对话框,其中包含“错误”。然后程序不会退出,直到选择 ok。

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

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多