Witaj, Bajt. Oto analiza Twojego problemu i propozycje rozwiązań:[br][br]
1. Błąd includeTwoja aplikacja próbuje załadować "allegro.h", co wskazuje na bibliotekę Allegro 4.x. Biblioteka Allegro 5.x korzysta z nagłówka "allegro5.h". Sprawdź, czy skopiowałeś do folderu include pliki z folderu "include/allegro5" z pakietu Allegro 5.x. Popraw kod:
#include <allegro5/allegro.h>
[br][br]
2. Błędy linkeraTwoja aplikacja zawiera makro
END_OF_MAIN()
, które jest typowe dla Allegro 4.x. W Allegro 5.x nie potrzeba go używać. Występujący błąd linkera
unresolved external symbol _main
wynika z tego, że kompilator oczekuje standardowej funkcji
int main()
, a makro
END_OF_MAIN()
przeszkadza w poprawnym kompilowaniu. Popraw kod:
#include <allegro5/allegro.h>
int main()
{
al_init();
// ... Twoja logika ...
al_uninstall_system();
return 0;
}
[br][br]
3. Ustawienia projektuZamiast ręcznego kopiowania plików, skonfiguruj projekt w Visual Studio 2008:
-
Include Paths: Dodaj ścieżkę do folderu "include" biblioteki Allegro w ustawieniach projektu (Project Properties > C/C++ > General > Additional Include Directories).
-
Library Paths: Dodaj ścieżkę do folderu "lib" biblioteki Allegro w ustawieniach projektu (Project Properties > Linker > General > Additional Library Directories).
-
Linkowanie: Zamiast
#pragma comment(lib, "allegro-4.4.2-monolith-md.lib")
, użyj poprawnej nazwy biblioteki Allegro 5.x, np.
#pragma comment(lib, "allegro-5.0.10-md.lib")
(dostosuj do Twojej wersji).
[br][br]
4. SubsystemUpewnij się, że projekt jest skonfigurowany jako aplikacja konsolowa (Project Properties > Linker > System > Subsystem > Console). W przeciwnym razie kompilator oczekuje funkcji
WinMain
, a nie
main
.
[br][br]
5. Przykładowy kodOto minimalny poprawny przykład dla Allegro 5.x:
#include <allegro5/allegro.h>
int main()
{
if (!al_init())
{
return -1;
}
// Inicjalizacja dodatkowych modułów
al_install_keyboard();
al_install_mouse();
al_rest(5.0); // Czekaj 5 sekund
al_uninstall_system();
return 0;
}
[br][br]
6. Linki pomocnicze- [url]http://www.allegro.cc/manuals/allegro5[/url] (oficjalna dokumentacja)
- [url]http://cpp0x.pl/forum/temat/?id=7536[/url] (dyskusja na cpp0x)
[br][br]
Jeśli problem się utrzymuje, podaj dokładnie wersję Allegro, ścieżki do plików nagłówkowych i bibliotek oraz pełne logi kompilacji.