gpt4 book ai didi

c++ - 如何获取 Allegro 中的错误原因?

转载 作者:行者123 更新时间:2023-11-30 03:53:38 29 4
gpt4 key购买 nike

我来自 SDL,那里有一个名为 SDL_GetError() 的函数,它神奇地返回了一个带有内部错误的 const char *。这是我在 Allegro 5 上的一段代码:

#include "game.h"

ALLEGRO_BITMAP *load_bmp(const char *s) {
ALLEGRO_BITMAP *bmp = nullptr;
bmp = al_load_bitmap(s);
if (!bmp) {

al_show_native_message_box(display,
"Fatal Error!",
"Failed to load: " ,
s,
NULL,
ALLEGRO_MESSAGEBOX_ERROR);

al_destroy_display(display);
return nullptr;

}

return bmp;
}

ALLEGRO_BITMAP *player = load_bmp("GFX\\player_up.bmp");

文件没问题,我可以直接从 al_load_bitmap 加载,但是,由于我添加了我的个人函数,Allegro 崩溃并给我它的错误对话框(所以,bmp 必须是 nullptr)。问题是这个错误对我来说绝对没用,我需要知道 Allegro 内部发生了什么(所以,像 al_get_error() 这样的东西会很棒)。我怎么知道发生了什么?

enter image description here

最佳答案

是文件范围内的变量player;换句话说,它是否在您的 main 运行之前初始化并有机会初始化 allegro 库?

假设是这种情况,请尝试将行更改为

ALLEGRO_BITMAP *player = nullptr;

并在您在程序启动期间的适当时间调用的函数中初始化它,例如:

void init_game_bitmaps()
{
player = load_bmp("GFX\\player_up.bmp");
// Other initialisation here ...
}

这样调用它:

// Somewhere in main, or an appropriate function call:
init_game_bitmaps();

关于c++ - 如何获取 Allegro 中的错误原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037327/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com