Allegro: компоновщик неправильно связывает библиотеки [Code::Blocks]

У меня проблема с библиотеками Allegro 5.0.10 в Code::Blocks. Кажется, они не связаны должным образом, потому что, когда я пытаюсь скомпилировать пример из вики:

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

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

ALLEGRO_DISPLAY *display = NULL;

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

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

al_clear_to_color(al_map_rgb(0,0,0));

al_flip_display();

al_rest(10.0);

al_destroy_display(display);

return 0;
}

Компилятор выдает ряд ошибок типа: D:/C++Dev/workspace/Obvi/Main.cpp:10: undefined reference to 'al_install_system'. Я попытался исправить это, связавшись с помощью «других параметров компоновщика». (-llegro-5.0.10-monolith-static-mt), но тогда компоновщик выдает ошибку: D:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lallegro-5.0.10-monolith-static-mt. Я добавил «Каталоги поиска»: библиотеки для компоновщика и включения для компилятора. В журнале сборки я также нашел: D:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible D:\C++Dev\libs\allegro-5.0.10-mingw-4.7.1-tdm\lib/liballegro-5.0.10-monolith-static-mt.a when searching for -lallegro-5.0.10-monolith-static-mt что говорит о том, что линкер находит библиотеку, но почему-то игнорирует ее.


person Renerte    schedule 03.01.2015    source источник
comment
Я предполагаю, что библиотека 32-битная, а вы пытаетесь скомпилировать свой код как 64-битный. Компоновщик видит библиотеку и отказывается, неправильная архитектура и движется дальше, попробуйте загрузить 64-битные файлы lib для allegro.   -  person tom    schedule 03.01.2015
comment
@username_unavailable Я не думаю, что есть 64-битные двоичные файлы для загрузки, поэтому мне придется использовать 32-битный компилятор или скомпилировать его самостоятельно. Большое спасибо за вашу помощь! Я бы никогда не подумал об архитектуре библиотеки.   -  person Renerte    schedule 03.01.2015


Ответы (1)


Вы связали библиотеку -lalleg? Перейдите в Настройки->Компилятор->Настройки компоновщика->Другие параметры компоновщика и введите -lalleg.

person János Simonyi    schedule 03.01.2015