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

xyqa

Frischling

  • »xyqa« ist der Autor dieses Themas

Beiträge: 16

Beruf: Schüler

  • Private Nachricht senden

1

06.10.2011, 18:37

SDL_Game Kapitel 12 Link Fehler

Ich habe das Buch C++ für Spieleprogrammierer durchgearbeitet, stoße jedoch auf folgendes Problem: Wenn ich das Projekt aus Kapitel 12 erstelle erhalte ich folgende Fehlermeldung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
1>------ Erstellen gestartet: Projekt: Mein erstes Spiel, Konfiguration: Debug Win32 ------

1>Shot.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Asteroid.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)" in Funktion ""public: static class CTimer * __cdecl TSingleton::Get(void)" (?Get@?$TSingleton@VCTimer@@@@SAPAVCTimer@@XZ)".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Player.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall CTimer::Update(void)" (?Update@CTimer@@QAEXXZ)" in Funktion ""public: void __thiscall CFramework::Update(void)" (?Up0date@CFramework@@QAEXXZ)".1>C:\Projekte C++\C++ für Spieleprogrammierer\Mein erstes Spiel\Debug\Mein erstes Spiel.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



Ich habe schon an den Einstellungen rumgespielt, gegoogelt und jede Menge in diesem Forum gelesen, aber ich habe immer noch keine Lösung gefunden.
Zur Info: Ich benutze Visual Studio 2010.
Eine der wichtigsten Erfahrungen als Programmierer: Wenn alles auf Anhieb funktioniert hat man definitiv etwas falsch gemacht ;)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »xyqa« (07.10.2011, 16:41)


ridens

Frischling

Beiträge: 47

Beruf: Freiberuflicher Entwickler

  • Private Nachricht senden

2

08.10.2011, 04:08

Ich erinnere mich vage, das Problem hatte ich auch. Soweit ich mich erinnere hab ich aber hier die Antwort gefunden. Ich glaube das Problem dabei war die Linker-Einstellung mit Multi-threaded DLL oder Multi-threaded Debug-DLL. Versuch das mal umzustellen in den Projekteinstellungen und schau ob da was anderes dabei rauskommt.

xyqa

Frischling

  • »xyqa« ist der Autor dieses Themas

Beiträge: 16

Beruf: Schüler

  • Private Nachricht senden

3

08.10.2011, 10:03

Hat leider nichts gebracht. Nur bei der Einstellung "Multithreaded (/MT)" kam folgende, noch längere Fehlermeldung raus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1>------ Erstellen gestartet: Projekt: Mein erstes Spiel, Konfiguration: Debug Win32 ------
1>LINK : warning LNK4098: Standardbibliothek "LIBCMT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>Shot.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Asteroid.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)" in Funktion ""public: static class CTimer * __cdecl TSingleton<class CTimer>::Get(void)" (?Get@?$TSingleton@VCTimer@@@@SAPAVCTimer@@XZ)".
1>Framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Player.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall CTimer::Update(void)" (?Update@CTimer@@QAEXXZ)" in Funktion ""public: void __thiscall CFramework::Update(void)" (?Update@CFramework@@QAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__CrtDbgReportW" in Funktion ""public: class std::_List_const_iterator<class std::_List_val<class CAsteroid,class std::allocator<class CAsteroid> > > & __thiscall std::_List_const_iterator<class std::_List_val<class CAsteroid,class std::allocator<class CAsteroid> > >::operator++(void)" (??E?$_List_const_iterator@V?$_List_val@VCAsteroid@@V?$allocator@VCAsteroid@@@std@@@std@@@std@@QAEAAV01@XZ)".
1>Player.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__CrtDbgReportW".
1>libcpmtd.lib(cout.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__CrtDbgReportW".
1>libcpmtd.lib(stdthrow.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__CrtDbgReportW".
1>libcpmtd.lib(cout.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__free_dbg" in Funktion ""private: void __thiscall std::_Yarn<char>::_Tidy(void)" (?_Tidy@?$_Yarn@D@std@@AAEXXZ)".
1>libcpmtd.lib(xdebug.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__free_dbg".
1>libcpmtd.lib(locale0.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__free_dbg".
1>libcpmtd.lib(xdebug.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__malloc_dbg" in Funktion ""void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z)".
1>libcpmtd.lib(locale0.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__malloc_dbg".
1>libcpmtd.lib(_tolower.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__calloc_dbg" in Funktion "__Getctype".
1>C:\Projekte C++\C++ für Spieleprogrammierer\Mein erstes Spiel\Debug\Mein erstes Spiel.exe : fatal error LNK1120: 6 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Eine der wichtigsten Erfahrungen als Programmierer: Wenn alles auf Anhieb funktioniert hat man definitiv etwas falsch gemacht ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

08.10.2011, 10:56

Sieht so aus als würde die timer.cpp(oder so ähnlich) nicht kompiliert. Ist sie vom Build ausgeschlossen oder überhaupt nicht eingetragen? Füge sie einfach mal zum Projekt hinzu und drück strg+alt+f7.

und Multithreaded dll wieder zurückstellen ;)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

xyqa

Frischling

  • »xyqa« ist der Autor dieses Themas

Beiträge: 16

Beruf: Schüler

  • Private Nachricht senden

5

08.10.2011, 11:57

Füge sie einfach mal zum Projekt hinzu und drück strg+alt+f7.



Habe ich gemacht und es hat funktioniert. Ich habe jetzt nur noch die folgenden Fehlermeldungen:

C-/C++-Quelltext

1
2
3
4
5
1>------ Erstellen gestartet: Projekt: Mein erstes Spiel, Konfiguration: Debug Win32 ------
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class std::_List_const_iterator<class std::_List_val<class CAsteroid,class std::allocator<class CAsteroid> > > & __thiscall std::_List_const_iterator<class std::_List_val<class CAsteroid,class std::allocator<class CAsteroid> > >::operator++(void)" (??E?$_List_const_iterator@V?$_List_val@VCAsteroid@@V?$allocator@VCAsteroid@@@std@@@std@@@std@@QAEAAV01@XZ)".
1>Player.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW".
1>C:\Projekte C++\C++ für Spieleprogrammierer\Mein erstes Spiel\Debug\Mein erstes Spiel.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


EDIT: gelöst: hatte die Konfigurationseigenschaften nur bei Debugging auf Multithread-DLL (glaube es heißt so) gestellt.

Danke für die Hilfe
Eine der wichtigsten Erfahrungen als Programmierer: Wenn alles auf Anhieb funktioniert hat man definitiv etwas falsch gemacht ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »xyqa« (08.10.2011, 12:03)


Werbeanzeige