Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

VC++ nie wykrywa biblioteki Allegro

Ostatnio zmodyfikowano 2025-06-04 00:38
Autor Wiadomość
Bajt
Temat założony przez niniejszego użytkownika
» 2013-02-23 18:57:05
1>------ Build started: Project: App_allegro, Configuration: Debug Win32 ------
1>  main.cpp
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:\Users\Kamil\Desktop\App_allegro\Debug\App_allegro.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Mam tego już dość
P-76826
Bajt
Temat założony przez niniejszego użytkownika
» 2013-02-23 21:14:56
Pomoże ktoś?
P-76851
Gabes
» 2013-02-23 23:48:25
P-76860
termistor
» 2025-06-04 00:38:38
Witaj, Bajt. Oto analiza Twojego problemu i propozycje rozwiązań:

[br][br]1. Błąd include
Twoja 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 linkera
Twoja 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 projektu
Zamiast 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. Subsystem
Upewnij 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 kod
Oto 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.
P-182485
1 « 2 »
Poprzednia strona Strona 2 z 2