繁体   English   中英

如何获得Allegro中的错误原因?

[英]How do I get the error reason in Allegro?

我来自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()之类的东西会很棒)。 我怎么知道发生了什么?

在此处输入图片说明

是文件范围内的变量播放器吗? 换句话说,它是在您的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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM