2017-03-10 61 views
0

运行快板我跑了BREW在OSX错误的OSX

安装快板下面这个教程:https://wiki.allegro.cc/index.php?title=Example_ExHello

我的代码

include <allegro.h> 

int main(void) { 
    if (allegro_init() != 0) 
    return 1; 

    /* set up the keyboard handler */ 
    install_keyboard(); 

    /* set a graphics mode sized 320x200 */ 
    if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) != 0) { 
    if (set_gfx_mode(GFX_SAFE, 320, 200, 0, 0) != 0) { 
    set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); 
    allegro_message("Unable to set any graphic mode\n%s\n", allegro_error); 
    return 1; 
    } 
    } 

    /* set the color palette */ 
    set_palette(desktop_palette); 

    /* clear the screen to white */ 
    clear_to_color(screen, makecol(255, 255, 255)); 

    /* you don't need to do this, but on some platforms (eg. Windows) things 
    * will be drawn more quickly if you always acquire the screen before 
    * trying to draw onto it. 
    */ 
    acquire_screen(); 

    /* write some text to the screen with black letters and transparent background */ 
    textout_centre_ex(screen, font, "Hello, world!", SCREEN_W/2, SCREEN_H/2, makecol(0,0,0), -1); 

    /* you must always release bitmaps before calling any input functions */ 
    release_screen(); 

    /* wait for a keypress */ 
    readkey(); 

    return 0; 
} 



1.c:1:1: error: unknown type name 'include' 
include <allegro.h> 
^ 
1.c:1:9: error: expected identifier or '(' 
include <allegro.h> 
     ^
2 errors generated. 
make: *** [1] Error 1 

回答

0

假定该做include <allegro.h>的错字应该是#include <allegro.h>,你已经安装allegro5 - 的API是allegro4(此示例是从)和allegro5之间非常不同。显示初始化sample program for allegro5显示了一些差异:

#include <stdio.h> 
#include <allegro5/allegro.h> 

int main(int argc, char **argv){ 

    ALLEGRO_DISPLAY *display = NULL; 

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

    display = al_create_display(640, 480); // very different to allegro4 
    if(!display) { 
     fprintf(stderr, "failed to create display!\n"); 
     return -1; 
    } 

    al_clear_to_color(al_map_rgb(0,0,0)); // makecol -> al_map_rgb, clear_to_color -> al_clear_to_color 

    al_flip_display(); 

    al_rest(10.0); 

    al_destroy_display(display); 

    return 0; 
} 

我建的使用:

c++ -I/usr/local/include allegro_display.cc -o allegro_display -L/usr/local/lib -lallegro -lallegro_main 

其中代码是文件allegro_display.cc英寸请注意,我编译使用C++编译器,因为快板确实是一个C++ API(当为C代码编译因为在C中的结构没有适当的调用约定,样品不工作,而没有用于C++)

+0

我被误以为印象是一个纯粹的C库。谢谢,这会画出一个黑色的矩形窗口。 – quantumpotato

+1

我对C VS C++问题的理由是,当我编译C编译器这个例子中,'al_map_rgb更换'al_map_rgb(0,0,0)'(255,255,255)'程序将与SEGV,这是崩溃通过使用C++编译器来避免某种形式的二进制兼容性问题或其中*似乎*编译器的问题。 – Petesh