SDL



  • Hallo, ich habe ein kleines Test-SDL Game geschrieben, und habs auf debbuging kompiliert, und habs getestet, läuft super, jetzt wollt ichs auf Releas kompilieren, und dann hab ich 20 Kompiler-Fehler:

    1>Kompilieren...
    1>main.cpp
    1>Verknüpfen...
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Quit" in Funktion ""public: void __thiscall CFramework::Quit(void)" (?Quit@CFramework@@QAEXXZ)".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_FillRect" in Funktion ""public: void __thiscall CFramework::Clear(void)" (?Clear@CFramework@@QAEXXZ)".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_MapRGB" in Funktion ""public: void __thiscall CFramework::Clear(void)" (?Clear@CFramework@@QAEXXZ)".
    1>Sprite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_MapRGB".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Flip" in Funktion ""public: void __thiscall CFramework::Flip(void)" (?Flip@CFramework@@QAEXXZ)".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_PumpEvents" in Funktion ""public: void __thiscall CFramework::Update(void)" (?Update@CFramework@@QAEXXZ)".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetKeyState" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_SetVideoMode" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetError" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
    1>Sprite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_GetError".
    1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Init" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
    1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_PollEvent" in Funktion ""private: void __thiscall CGame::ProcessEvents(void)" (?ProcessEvents@CGame@@AAEXXZ)".
    1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_FreeSurface" in Funktion ""public: __thiscall CSprite::~CSprite(void)" (??1CSprite@@QAE@XZ)".
    1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_SetColorKey" in Funktion ""public: void __thiscall CSprite::SetColorKey(int,int,int)" (?SetColorKey@CSprite@@QAEXHHH@Z)".
    1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_UpperBlit" in Funktion ""public: void __thiscall CSprite::Render(void)" (?Render@CSprite@@QAEXXZ)".
    1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_LoadBMP_RW" in Funktion ""public: void __thiscall CSprite::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@CSprite@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".
    1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_RWFromFile" in Funktion ""public: void __thiscall CSprite::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@CSprite@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".
    1>Timer.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetTicks" in Funktion ""public: void __thiscall CTimer::Update(void)" (?Update@CTimer@@QAEXXZ)".
    1>LIBCMT.lib(crt0.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".
    1>.\Release/SDL_Game.exe : fatal error LNK1120: 17 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://d:\C++\Projekte\SDL_GAME\Release\BuildLog.htm" gespeichert.
    1>SDL_Game - 20 Fehler, 0 Warnung(en)
    

    Hat jemand ne Ahnung was die Sch. soll? Hab kein Plan was da soooo Falsch ist, da es ja auf Debug funktioniert!

    Grüße



  • Eventuell verlangt deine IDE, dass du beim Umstellen von Debug auf Release nochmal die zu linkenden libs angibst.

    Ansonsten hat SDL eventuell verschiedene libs für Debug und Release, bin mir da aber nicht mehr so sicher.



  • Mir ist sowas nich bekannt, aber en fehlern zufolge schon, aber wo geb ich die dateien für den releas mode ein?
    hab vc++ von ms



  • Es gab mal seltsame Fälle, dass du zuerst die SDLmain und dann erst die SDL verlinken darfst... kann aber auch gut möglich sein das da wieder VS rumspasstet, davon ist man ja einiges, eigenartiges gewöhnt. Einfach mal extra verlinken, vielleicht geht's ja...



  • ganz einfach. Ich gehe davon aus, dass du einen neuen Compiler gemacht hast (VC 2008)

    Dort musst du das gleiche, was du beim Debug gemacht hast auch mit dem Release machen. Ich weiß auch nicht warum die das in den neuen Versionen so geändert haben. Aber ist halt so....

    also das gleiche nochmal eingeben... nur halt bei Release und nciht bei debug...

    edit:
    ALSO: Projekt -> Einstellungen -> oben beim Dropdownmenu -> Release / Debug 😉



  • Hallo Leute,

    ich habe das gleiche Problem. Nur das es bei mir schon im Debugmodus auftritt. Ich habe auch VC++ 2008 und weiß nicht genau was für Einstellungen ich machen muss. Ich habe bisher folgende Einstellungen gemacht - ohne Erfolg :

    Projekt--> Eigenschaften--> Konfigurationseigenschaften --> C/C++ : Bei "Laufzeitbibliothek" von "Multithreaded-Debug-DLL"auf "Multithreaded-DLL" geschaltet.

    Extras--> Optionen--> Projekte und Projektmappen--> VC++-Verzeichnisse : Pfad für Inlcude- und lib-Dateien erstellt

    Projekt--> Eigenschaften--> Konfigurationseigenschaften --> Linker --> Erweitert : Bei "Importbibliothek" "(/IMPLIB:[sdl.lib, sdlmain.lib])" eingetragen.

    Vielen Dank schon einmal im Voraus !

    Viele Grüße
    Mutabor



  • @Mutabor:
    Dein erster Schritt war nicht wirklich notwendig.
    Beim dritten hast du dann auf der komplett falschen Baustelle rumgewerkelt.

    Die Bibliotheken kommen nach

    Projekt--> Eigenschaften--> Konfigurationseigenschaften --> Linker --> Eingabe --> Zusätzliche Abhängigkeiten

    MfG
    slice


Anmelden zum Antworten