编译器检测到allegro.h,但不检测allegro_primitives.h

时间:2012-01-02 06:51:33

标签: c++ ubuntu g++ allegro

当我使用g ++编译Allegro 5程序时,它会抱怨undefined reference to 'al_init_primitives_addon', al_draw_filled_rectangle以及allegro_primitives.h中的其他此类函数。它并没有抱怨allegro.h中的函数,如al_create_display

包括:

#include <allegro5/allegro.h>

#include <allegro5/allegro_primitives.h>

#include "objects.h"

#include "main.h"

编译器命令:

g++ main.cpp -o game -lallegro -I/usr/include/allegro5 -L/usr/lib/allegro5

投诉:

/tmp/ccAyQlcl.o: In function `main':
main.cpp:(.text+0xef): undefined reference to `al_init_primitives_addon'
/tmp/ccAyQlcl.o: In function `Draw()':
main.cpp:(.text+0x38c): undefined reference to `al_draw_filled_rectangle'
main.cpp:(.text+0x415): undefined reference to `al_draw_filled_rectangle'
顺便说一句,MSVC ++编译好了。

2 个答案:

答案 0 :(得分:3)

您需要与allegro和allegro_primitives链接。正确的方法是:

g++ main.cpp -o game $(pkg-config --libs 
   allegro-5.0 allegro_main-5.0 allegro_primitives-5.0)

(当然,全部在一行。)

.pc文件位于/usr/local/lib/pkgconfig,需要位于PKG_CONFIG_PATH环境变量中。

答案 1 :(得分:0)

您的-lallegro不包含这些功能。如果系统路径中有旧库,而/usr/lib/allegro5中需要5.x,则需要在-L之前传递-l