Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.02.2009, 22:54

Nicht aufgelöstes externes Symbol "__imp___CrtDbgReport

Ich versuche gerade das SDL Spiel aus dem Kapitel "Ein Spiel mit der SDL" mit Visual C++ 2008 Express Edition zu kompilieren. Dazu habe ich mir die neue SDL Development Library 1.2.13 runtergeladen und die include und die lib Dateien unter Extras->Optionen->VC++ Verzeichnisse verfügbar gemacht. Außerdem habe ich in den Projekteigenschaften SDLmain.lib und SDL.lib als zusätzliche Abhängigkeiten für den Linker eingestellt. Ich bekomme nun leider immer eine Warnung die wie folgt ausssieht:

Quellcode

1
2
3
4
5
Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class std::list<class CAsteroid,class std::allocator<class CAsteroid> >::_Const_iterator<1> & __thiscall std::list<class CAsteroid,class std::allocator<class CAsteroid> >::_Const_iterator<1>::operator++(void)" (??E?$_Const_iterator@$00@?$list@VCAsteroid@@V?$allocator@VCAsteroid@@@std@@@std@@QAEAAV012@XZ)".
1>Player.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW".
1>.\Debug/SDL_Game.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\User\Eigene Dateien\Visual Studio 2008\Buch Source\Kapitel 12\Debug\BuildLog.htm" gespeichert.
1>SDL_Game - 3 Fehler, 0 Warnung(en)
Woran könnte das liegen? Ich habe auch schon versucht folgendes vor die main funktion zu schreiben:

Quellcode

1
2
3
#ifdef _WIN32
#undef main
#endif
bzw.

Quellcode

1
2
3
4
#ifdef _WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif
die SDL.dll ist auch im Verzeichnis ... Wenn ich ein Release erstelle dann bekomme ich folgende Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1>------ Erstellen gestartet: Projekt: SDL_Game, Konfiguration: Release Win32 ------
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://c:\Dokumente und Einstellungen\User\Eigene Dateien\Visual Studio 2008\Buch Source\Kapitel 12\Release\BuildLog.htm" gespeichert.
1>SDL_Game - 20 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Das sieht dann ja so aus als wäre die SDL.h garnicht verfügbar oder? Liegt das vielleicht an der neuen SDL Version? Vielen Dank im Vorraus ;-)
"Der Wald wäre sehr leise, wenn nur die begabtesten Vögel singen würden."

2

08.02.2009, 02:06

Liegt am Linker. Hat nix mit dem Headern oder DLLs zu tun.

Hast du denn den/die Ordner der "*.lib" vom SDL unter Projekt->Eigenschaften->Konfigurationseigenschaften->Linker->Zusätzliche Bibliothekseigenschaften hinzugefügt?

Gruß
Markus

3

08.02.2009, 09:51

Ich habe die *.lib Ordner unter Projekt->Eigenschaften->Eingabe->Zusätzliche Abhängigkeiten eingetragen. Mir ist auch eben aufgefallen das ich für Release das ganze noch nicht gemacht hatte. Jetzt bekomme ich dort folgende Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
1>SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: Lokal definiertes Symbol "_isspace" wurde in _ParseCommandLine-Funktion importiert.
1>SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: Lokal definiertes Symbol "___iob_func" wurde in _ShowError-Funktion importiert.
1>SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: Lokal definiertes Symbol "_fclose" wurde in _cleanup_output-Funktion importiert.
1>SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: Lokal definiertes Symbol "_exit" wurde in _main-Funktion importiert.
1>SDLmain.lib(SDL_win32_main.obj) : warning LNK4217: Lokal definiertes Symbol "_strrchr" wurde in _main-Funktion importiert.
1>SDLmain.lib(SDL_win32_main.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__fprintf" in Funktion "_ShowError".
1>.\Release/SDL_Game.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
"Der Wald wäre sehr leise, wenn nur die begabtesten Vögel singen würden."

Werbeanzeige