2016-06-28 45 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