当我使用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 ++编译好了。
答案 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
。