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

18.04.2010, 21:22

Spiel aus Kapitel 12 kompiliert nicht mit Visual C++ 2008 Express Edition

Hey Leute,

ich bin jetzt bei Kapitel 12 angekommen und wollte das Spiel kompilieren, um zu sehen, was mich da so erwartet.

Ich benutze Visual C++ 2008 Express Edition, für das die Einrichtungsanleitung im Buch leider nicht mehr gültig ist.
Nach etwas Fummelei und Recherche konnte ich aber trotzdem SDL einrichten und zwar so:

Tools > Options > Projects and Solutions > VC++ Directories > Include files > C:\SDL-1.2.14\include

Tools > Options > Projects and Solutions > VC++ Directories > Library files > C:\SDL-1.2.14\lib

Project > SDL_Game Properties > C/C++ > Code Generation > Runtime Library > Multi-threaded DLL (/MD)

Project > SDL_Game Properties > Linker > Input > Additional Dependencies > odbc32.lib odbccp32.lib sdl.lib sdlmain.lib

Leider kompiliert das Spiel nicht und ich bekomme nach Drücken von F7 (Build Solution) in der Debug-Konfiguration folgende Fehler beim Linken:

Quellcode

1
2
3
4
1>Linking...
1>Game.obj : error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "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: unresolved external symbol __imp___CrtDbgReportW
1>.\Debug/SDL_Game.exe : fatal error LNK1120: 1 unresolved externals


In der Release-Konfiguration ist die Fehlerliste noch viel größer und absolut unüberschaubar.

Wenn ich in folgende Einstellung mache, kompiliert das Spiel zumindest schon in der Debug-Konfiguration:

Project > SDL_Game Properties > C/C++ > Code Generation > Runtime Library > Multi-threaded Debug DLL (/MDd)

In der Release-Konfiguration kann ich damit das Spiel aber immer noch nicht kompilieren.

Was ist das für ein Problem, warum taucht es auf und wie kann ich es lösen?

Grüße,

KleinerCoder

2

18.04.2010, 21:25

Stell mal deinen Zeichensatz um auf Multi-Byte
Metal ist keine Musik sondern eine Religion.

3

18.04.2010, 21:42

Der Zeichensatz ist bereits auf Multi-Byte gestellt.

4

18.04.2010, 21:53

Such mal hier im Forum nach "CrtDbgReport".
fka tm

5

18.04.2010, 22:28

Ich habe den Fehler mittlerweile gefunden und er war simpler als gedacht.

Zum einen scheint das Kompilieren in der Debug-Konfiguration wirklich nur in der von mir oben angegebenen Konfiguration zu funktionieren:

Project > SDL_Game Properties > C/C++ > Code Generation > Runtime Library > Multi-threaded Debug DLL (/MDd)

Angesichts des "Debug" im Namen der Einstellung zur Runtime Library erscheint mir diese Einstellung auf den ersten Blick logisch, aber da ich nicht weiss, was hinter den Kulissen geschieht, weiss ich auch nicht, warum gerade diese Einstellung benötigt und zumindest am Anfang von Kapitel 12 nichts davon erwähnt wird.

Beim Umstellen auf die Release-Konfiguration ist mir dann aufgefallen, dass die Einträge für die Library-Dateien "sdl.lib" und "sdlmain.lib" gar nicht aus der Debug-Konfiguration übernommen wurden.

Ich musste die Library-Dateien also nur nochmals eintragen, sodass die Einstellung wie folgt aussieht:

Project > SDL_Game Properties > Linker > Input > Additional Dependencies > sdl.lib sdlmain.lib

So kompiliert das Spiel dann auch mit der Release-Konfiguration und der entsprechenden Einstellung für die Runtime Library:

Project > SDL_Game Properties > C/C++ > Code Generation > Runtime Library > Multi-threaded DLL (/MD)

Ich danke dennoch für die tatkräftige Mithilfe. :)

Werbeanzeige