A_lemon_D 2017-10-01 10:20 采纳率: 0%
浏览 402

在qt下使用allegro库 构建失败 求解

根据http://www.gameres.com/200161.html学习使用allegro库
在qt下运行,代码如下:
#include
#include
#include
#pragma comment(lib,"allegro-5.0.7-mt-debug.lib")
#pragma comment(lib,"allegro_image-5.0.7-mt-debug.lib")

int game_init();
int game_run();
int game_frame();
int game_render();
int game_destroy();
int game_msg();

const int WIN_WIDTH =800;
const int WIN_HEIGHT =600;

ALLEGRO_DISPLAY *display;
ALLEGRO_EVENT_QUEUE *queue;
ALLEGRO_EVENT my_event;
ALLEGRO_BITMAP *bmp = 0;

int main()
{
int error = 0;
error = game_init();
if(error!=0)
return error;

error = game_run();
if(error!=0)
    return error;

error = game_destroy();
if(error!=0)
    return error;

return 0;

}

int game_init()
{
if(!al_init())
return 1;

al_install_mouse();
al_install_keyboard();

al_init_image_addon();

//al_set_new_display_flags(ALLEGRO_FULLSCREEN);

display = al_create_display(WIN_WIDTH,WIN_HEIGHT);
if(!display)
        return 2;

bmp = al_load_bitmap("bmp.jpg");
if(!bmp)
    return 3;

queue = al_create_event_queue();

al_register_event_source(queue,al_get_keyboard_event_source());
al_register_event_source(queue,al_get_display_event_source(display));

return 0;

}

int game_msg()
{
al_wait_for_event(queue,&my_event);

/*  函数原型
    void al_wait_for_event(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event)
    等到队列里有新事件时,将新事件的内容复制到 ret_event里,并从事件队列里移除它
    */

if(my_event.type==ALLEGRO_EVENT_DISPLAY_CLOSE)
    return 98;
if(my_event.type == ALLEGRO_EVENT_KEY_CHAR){
    if(my_event.keyboard.keycode == ALLEGRO_KEY_ESCAPE)
        return 99;
}

return 0;

}

int game_frame()
{
return 0;
}

int game_render()
{
al_clear_to_color(al_map_rgb(0,0,0));

al_draw_bitmap(bmp,0,0,0);

al_flip_display();

return 0;

}

int game_run()
{
double t_now = 0.0;
double t_pre = 0.0;
int error = 0;

while(true)
{
    if(!al_is_event_queue_empty(queue)){
        error = game_msg();
        if(error!=0)
            return error;
    }
    else{
        t_now = al_get_time();
        if(t_now-t_pre>=0.033){
            error = game_frame();
            if(error!=0)
                return error;

            error = game_render();
            if(error!=0)
                return error;

            t_pre = t_now;
        }
    }
}
return 0;

}

int game_destroy()
{
al_destroy_bitmap(bmp);
return 0;
}

显示:
collect2错误:ld返回一

请问是什么原因?

在linux的vim下可运行,但是图片无法显示,程序框闪退(不知道图片该保存在哪。。我把图片保存在和程序一个文件夹下面)

求大神解答一下!谢谢!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题