Allegro 5 断言失败

Posted

技术标签:

【中文标题】Allegro 5 断言失败【英文标题】:Allegro 5 assertion fail 【发布时间】:2013-11-19 08:15:08 【问题描述】:

我正在尝试使用 allegro 5.0.10 加载位图

ALLEGRO_PATH *path = al_get_standard_path(ALLEGRO_RESOURCES_PATH);
al_set_path_filename(path, "Bitmap.bmp");

al_init_image_addon();
ALLEGRO_BITMAP *bmp = al_load_bitmap(al_path_cstr(path, '/'));
if (!bmp) 
    fprintf(stderr, "No Background.bmp in this directory...");
    return -2;


al_draw_bitmap(bmp, 0, 0, 0);

当我尝试在调试模式下运行程序时,我得到了这个错误:

Assertion failed!

Program: c:\allegro\bin\allegro-5.0.10-monolith-md-debug.dll
File: allegro-git\src\system.c
Line: 336

Expression: active_sysdrv

...

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

你需要通过调用al_init()来初始化allegro。在此之前可以调用很少的 Allegro 函数。

【讨论】:

我没有展示完整的代码,但我已经做了必要的事情 @junyi00,如果你打电话给al_init(),你就不会收到这个错误。【参考方案2】:

@junyi00,您需要确保在尝试加载任何资源之前调用al_init()。在上面的代码中,确保在调用 al_get_standard_path(ALLEGRO_RESOURCES_PATH)al_set_path_filename(path, "Bitmap.bmp")al_load_bitmap(al_path_cstr(path, '/')) 之前已经调用了 al_init(),基本上所有的 Allegro 函数都从那里调用。除了一两个之外,不能在此函数之前调用其他 Allegro 函数。请参阅 http://manpages.ubuntu.com/manpages/artful/en/man3/al_init.3alleg5.html 和 http://manpages.ubuntu.com/manpages/zesty/en/man3/al_install_system.3alleg5.html 这些是 al_init() 和 al_install_system() Allegro 函数手册页的链接

【讨论】:

以上是关于Allegro 5 断言失败的主要内容,如果未能解决你的问题,请参考以下文章

C++ Allegro 5 - 找不到访问冲突的来源

DevC++ 中的 Allegro 错误

allegro 5.1.3 和 microsoft visual studio 2010 for android?

在其他计算机上运行 Allegro 5

如何在 allegro 5 中创建、加载和使用精灵表?

allegro,相同net的铺铜和焊盘无法连接