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

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

1

11.03.2009, 01:38

Fehler beim Starten des SDL-Spiels (externe Verweise)

Ok, ich stelle die Frage hier jetzt mal weil ich selber echt nicht weiterkomme.

Ich versuche gerade erfolglos das SDL-Spiel zu compilieren.
Dazu habe ich die Originaldaten von der CD auf den Desktop kopiert und entsprechend das SDL-Verzeichnis eingebunden.
Trotzdem erhalte ich immer wieder eine Fehlermeldung die mit externen Verweisen zu tun hat, da keine genau Zeile angezeigt wird weiss ich aber auch nicht woran es liegen kann. Der Ordner Data mit den .bmp Grafiken habe ich mitkopiert.

Hier einmal die Fehlermeldung:

1>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>SDL_Game - 3 Fehler, 0 Warnung(en)


Ich kann damit echt überhaupt nichts anfangen, da es sich um den Originalcode handelt kann ich mir auch nicht vorstellen das dieser falsch ist, ich tippe eher darauf das ich irgendeine Einstellung ändern muss.
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

2

11.03.2009, 08:16

Google Ergebnis Nr 1 :)
http://www.irrlicht3d.de/forum/viewtopic.php?f=2&t=558&hilit=

Gruß
Markus

3

11.03.2009, 08:34

Warum in der Ferne schweifen, qwertzui11 ?

Forensuche "CrtDbgReport" -> Ergebnis
fka tm

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

4

11.03.2009, 12:13

Also das sind die Verweise welche unter Linker/Eingabe/zusätzlichen Abhängigkeiten eingestellt worden sind:

odbc32.lib
odbccp32.lib
sdl.lib
sdlmain.lib

Im Buch selber wird nur die sdl.lib genannt, warum in den Beispieldateien noch mehr auftauchen weiss ich nicht. Streiche ich allerdings alle bis auf die sdl.lib erhöht sich die Fehleranzahl auf 4. Bei der selben Fehlermeldung wie oben bereits genannt.

Es ist also jetzt klar wo der Fehler liegt, ich kenne mich mit diesen .lib Verweisen aber überhaupt nicht aus, hat jemand vielleicht eine Idee was genau ich ändern muss. Habe schon ein bisschen was ausprobiert, ist aber eher nach dem Prinzip try & error und nicht besonders effizient.

Falls das irgendwie noch von Bedeutung sein sollte, ich verwende die VC++ 2008 Express Version.
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

5

11.03.2009, 12:42

Ähm, jetzt wurden dir zwei Links gepostet.
Hast du die mal durchgelesen und entsprechend angewendet?
fka tm

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

6

11.03.2009, 12:50

Ja habe die Links durchgearbeitet, praktisch alle threads die bei der Sufu erscheinen auch, leider wie gesagt bisher ohne Ergebnis.
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

7

11.03.2009, 12:54

Also Libcmt.lib deiner Liste hinzugefügt, libc.lib ausgeschlossen?
Dann sollte es eigentlich funktionieren.

Wahlweise kannst du die Stellen im Code, wo CrtDbgReport vorkommt, auch auskommentieren.
fka tm

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

8

11.03.2009, 13:06

Libcmt.lib wurde der Liste hinzugefügt, libc.lib ist in der Liste nicht vorhanden.
Es sei denn es ist mit ausschließen eine andere Einstellung an anderer Stelle gemeint.

Versuche ich mit diesen Verweisen zu compilieren:

sdl.lib
sdlmain.lib
odbc32.lib
odbccp32.lib
Libcmt.lib

Erhalte ich folgende Fehlermeldung:

Zitat

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __invalid_parameter ist bereits in Libcmt.lib(invarg.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) ist bereits in Libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: "public: __thiscall std::exception::exception(void)" (??0exception@std@@QAE@XZ) ist bereits in Libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) ist bereits in Libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: "public: __thiscall std::exception::exception(char const * const &)" (??0exception@std@@QAE@ABQBD@Z) ist bereits in Libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _exit ist bereits in Libcmt.lib(crt0dat.obj) definiert.

1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in Libcmt.lib(typinfo.obj) definiert.

1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in Libcmt.lib(typinfo.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _strrchr ist bereits in Libcmt.lib(strrchr.obj) definiert.

1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __isctype ist bereits in Libcmt.lib(isctype.obj) definiert.

1>LINK : warning LNK4098: Standardbibliothek "MSVCRT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

1>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.

Soweit ich diese Fehlermeldungen einschätzen kann ist also etwas doppelt vorhanden, es führt allerdings zu keinem Ergebnis andere .lib Verweise wegzulöschen. Ich habe praktisch alle Kombinationen durchprobiert.
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

9

11.03.2009, 13:15

Unter Linker - Eingabe -> Bibliothek ignorieren kannst du die Libc.lib eintragen.

Unter C++ - Codegenerierung -> Laufzeitbibliothek sollte "Multithreaded-Debug" oder "Multithreaded-Debug-DLL" eingetragen sein.

Edit:
Ich habe mal ein Quote-Tag um die Fehlermeldung in deinem Post gelegt.
Liest sich besser. ;)
fka tm

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

10

11.03.2009, 13:33

Also ich habe jetzt die libc.lib wie beschrieben ausgeschlossen.
Laufzeitbibliothek wurde auf Multithreaded-Debug-DLL (/MDd) geändert.
Die anderen .lib Verweise wurden so gelassen wie oben bereits aufgeführt.

Ich bekomme jetzt folgende Fehlermeldung:

Zitat


1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __invalid_parameter ist bereits in libcmt.lib(invarg.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) ist bereits in libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: "public: __thiscall std::exception::exception(void)" (??0exception@std@@QAE@XZ) ist bereits in libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) ist bereits in libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: "public: __thiscall std::exception::exception(char const * const &)" (??0exception@std@@QAE@ABQBD@Z) ist bereits in libcmt.lib(stdexcpt.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _exit ist bereits in libcmt.lib(crt0dat.obj) definiert.

1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in libcmt.lib(typinfo.obj) definiert.

1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in libcmt.lib(typinfo.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strrchr ist bereits in libcmt.lib(strrchr.obj) definiert.

1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __isctype ist bereits in libcmt.lib(isctype.obj) definiert.

1>LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

1>libcmt.lib(crt0init.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

1>.\Debug/SDL_Game.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.


Der ursprüngliche Fehler taucht nicht mehr auf, allerdings scheint es immer noch einen Konflikt zwischen den einzelnen Bibliotheken zu geben.
Interessant ist, wenn ich unter Bibliothek ignorieren gar nichts eintrage, kommt die selbe Fehlermeldung. Offensichtlich wird libc.lib also nicht wirklich ausgeschlossen.
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

Werbeanzeige