2016-06-28 130 views
0

我一直在尝试使用Allegro 5.2版,但出于某种原因,我无法使用MinGW在我的系统(运行Windows 10 64位)上编译它。Allegro 5.2编译错误

My Linker Settings

这里就是我试图链接。根据维基这应该是正确的,但每当我尝试编译示例代码我得到的错误,如

src\game.c|13|undefined reference to `al_clear_to_color'| 

这个功能应该是目前所有我知道的。

我真的很感谢所有帮助:)

这里的

#include"../include/init.h" 

#include "allegro5/allegro5.h" 
#include"allegro5/allegro_audio.h" 
#include"allegro5/allegro_acodec.h" 
#include<stdio.h> 
#include<stdlib.h> 

const float fps = 30; 
const int width = 256; 
const int height = 240; 

int init() { 
    running = 1; 

    if(!al_init()) { 
     fprintf(stderr, "failed to initialize allegro!\n"); 
     return -1; 
    } 

    timer = al_create_timer(1.0/fps); 
    if(!timer) { 
     fprintf(stderr, "failed to create timer!\n"); 
     return -1; 
    } 

    display = al_create_display(width, height); 
    if(!display) { 
     fprintf(stderr, "failed to create display!\n"); 
     return -1; 
    } 

    event_queue = al_create_event_queue(); 
    if(!event_queue) { 
     fprintf(stderr, "failed to create event_queue!\n"); 
     return -1; 
    } 

    /*if(!al_install_audio()){ 
     fprintf(stderr, "failed to initialize audio!\n"); 
     return -1; 
    } 

    if(!al_install_keyboard()) { 
     fprintf(stderr, "failed to initialize the keyboard!\n"); 
     return -1; 
    } 

    if(!al_init_acodec_addon()){ 
     fprintf(stderr, "failed to initialize audio codecs!\n"); 
     return -1; 
    } 

    if (!al_reserve_samples(1)){ 
     fprintf(stderr, "failed to reserve samples!\n"); 
     return -1; 
    }*/ 

    if(!al_init_primitives_addon()) { 
     fprintf(stderr, "failed to create primitives addon"); 
     return -1; 
    } 


    al_register_event_source(event_queue, al_get_display_event_source(display)); 

    // register timer event for max fps 
    al_register_event_source(event_queue, al_get_timer_event_source(timer)); 
    //al_register_event_source(event_queue, al_get_keyboard_event_source()); 

    al_clear_to_color(al_map_rgb(0,0,0)); 

    al_flip_display(); 

    al_start_timer(timer); 

    return 1; 
} 
+0

嗯,我真的不明白为什么代码不能编译,你可以尝试直接在allegro.cc论坛上询问开发者。他们通常喜欢帮助新用户:) – rlam12

+0

似乎是一个好主意:)感谢 – unlink

回答

0

使用al_map_rgb_f()函数来变换颜色,这样不会编译的代码示例:al_clear_to_color(al_map_rgb(255, 255, 255));

你能在这里插入你的代码吗?

对不起,这不应该是一个答案,因为虽然我没有评论它的声誉。

+0

是的,我在主要问题中添加了一个代码示例作为编辑。 – unlink

0

我可以在您的链接器设置中看到,您将单片版本和所有模块分开链接。 Monolith版本将所有其他模块合并为一个,使您不需要其他所有的allegro_ *库。那里可能有冲突?除此之外,请检查日志并检查问题是否都是“调试”和“发布”。

+0

这可能是更好的评论 – mhatch