Я пытаюсь узнать, как использовать allegro5, поэтому я установил его из исходного кода на их github, и все шло нормально, пока я не попытался загрузить изображение.Вот мой код, который не работал.
#include<allegro5/allegro.h>
#include<allegro5/allegro_image.h>
#include<stdio.h>
int main(int argc, char **argv){
al_init();
al_init_image_addon();
al_create_display(640,560);
ALLEGRO_BITMAP * image = al_load_bitmap("pi.png");
while(true){
al_clear_to_color(al_map_rgb(100,0,0));
if(image == NULL){
printf("Image didn't load properly\n");
return -1;
}
al_draw_bitmap(image, 0, 0, 0);
al_flip_display();
}
}
Но после создания pi.bmp
в том же каталоге и изменения
ALLEGRO_BITMAP * image = al_load_bitmap("pi.png");
на
ALLEGRO_BITMAP * image = al_load_bitmap("pi.bmp");
Работает как положено.У меня уже есть libpng16-16 и libpng-dev.Я компилирую файл (main.cpp) с помощью этой команды:
g++ main.cpp -I/usr/local/include/allegro5 -L/usr/local/lib -lallegro -lallegro_image -lpng
Кто-нибудь знает, что я делаю неправильно?
РЕДАКТИРОВАТЬ: Под неработающим я имею в виду, что image == NULL
true
Также я просто попытался сделать это на своем ноутбуке.Я считаю, что проблема должна быть где-то с моей установкой.Мой рабочий стол (тот, который не работает) работает под управлением Ubuntu 18.10 (космический), а мой ноутбук работает 18.04 (бионический) и отлично работает после добавления ppa и обновления.Кажется, у них есть только предварительно скомпилированные двоичные файлы для bionic, что и заставило меня скомпилировать из исходного кода.
EDIT2: ответ @ rcorre работал для меня!Надеюсь, это поможет кому-то еще в будущем.При сборке необходимо использовать команду cmake -D WANT_IMAGE_PNG=1 ..
из каталога сборки.