Brauche Hilfe bei Fehler: "Verweis auf nicht aufgelöstes externes Symbol"
-
Der Compiler gibt mir folgenden Fehler aus:
------ Erstellen gestartet: Projekt: SDL_Test, Konfiguration: Debug Win32 ------
Kompilieren...
Tower.cpp
Code wird generiert...
Kompilieren...
Spielfeld.cpp
Code wird generiert...
Überspringen... (keine relevanten Änderungen gefunden)
Game.cpp
main.cpp
Verknüpfen...
Spielfeld.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class CShot const & __thiscall std::list<class CShot,class std::allocator<class CShot> >::_Const_iterator<1>::operator*(void)const " (??D?$_Const_iterator@list@VCShot@@V?$allocator@VCShot@@@std@@@std@@QBEABVCShot@@XZ)".
C:\Projekte\SDL_Test\Debug\SDL_Test.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
Das Buildprotokoll wurde unter "file://c:\Projekte\SDL_Test\SDL_Test\Debug\BuildLog.htm" gespeichert.
SDL_Test - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 1 aktuell, 0 übersprungen ==========Was will er mir damit sagen?
Ich würde ja code posten wenn ich wüste wo der fehler liegt.
Wenn ich auf den Fehler klicke um zur STelle im Code zu kommen sagt er mir
"Das System kann die Angegebene Datei nicht finden"PLZ HELP

Danke im Voraus
greece57
-
Hast Du eventuell vergessen den entsprechenden Klassennamen vor die Methode in der cpp datei zu schreiben?
Btw. der thread Titel ist ziemlich unglücklich gewählt.
-
Ich weiß aber ich wußte einfach nicht woher der Fehler kommt, dadurch konnte ich im Thema auch nicht genauer werden. Ich versuche nächstes mal zurerst den Fehler einzugrenzen:
Mein Fehler liegt wohl an der Zeile die meiner Meinung nach richtig ist
list<CShot> m_Shotlist;ich habe Shot.cpp und Shot.hpp fertig in mein Projekt eingefügt - könnte es damit zu problemen kommen?
Wäre für jede Hilfe dankbar
Mfg
greece57----------------------------------------------------------
EDIT
Wenn ich die Zeile in eine andere Klasse schiebe (z.B. in Game.cpp) funktioniert es (könnte es daran liegen dass die Klasse die die Liste erstellen soll eh schon in einer Liste definiert wird?
Wenn ja kann ich das problem ungehen?
Etwas code zum verständniss:#ifndef SPIELFLAECHE_HPP #define SPIELFLAECHE_HPP #include <list> #include "Sprite.hpp" #include "Feld.hpp" #include "Tower.hpp" #include "Shot.hpp" class CSpielfeld { public: //[...] private: //[...] list<CTower> m_TowerList; // Liste der Tower CSprite *m_pSpriteShot; }; #endifund die Klasse CTower:
#ifndef TOWER_HPP #define TOWER_HPP #include <list> #include "Shot.hpp" #include "Sprite.hpp" class CTower { public: void Init (CSprite *pSpriteShot, float fXPos, float fYPos, int Feldnr, int Towerart); //[...] private: CSprite *m_pSpriteShot; // [...] list<CShot> m_Shotlist; }; #endif
-
Anscheinend linkst du in der Debug-Konfiguration gegen die Release-Version der C-Runtime. Schau mal in deine Projekteinstellungen.
-
sry bin anfänger - soll also genau heißen was wird bei mir falsch sein?
------------------------------Edit-----------------------
Danke jetzt geht es ich habe einfach die verlinkungen für die Debug version auch in die Release übernommen
kann mir jemand erklären was er für ein problem hatte?
Ich hatte doch nie die Release version ausprobiert bzw. compiliert?
kleines Problem:
Die debugversion zeigt immer noch den gleichen fehler an!
kann nur die releaseversion ausführen
-
Wie schon gesagt. Du linkst eine Release Version und da fehlen natürlich gewisse Sachen, die in Debug dabei sind. Wenn du das dann kompilieren willst findet er die Funktionen nicht und dann kommt genau so ein Fehler..
-
das heißt dass ich wie das problem lösen kann?
-
Projekt -> Projekteigenschaften -> Konfigurationseigenschaften -> C/C++ -> Codegenerierung und dann da die Laufzeitbibliothek auf MDd oder MTd stellen.
EDIT:
Also nur in der Debug Version. In der Release Version natürlich das ohne das d am Ende lassen.