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

15.02.2012, 15:59

Unaufgelöstes Symbol - list falsch eingebunden

Hallo!

Ich habe eine Main.cpp in dieser binde ich #include <list> ein.
In der Main gibt es noch eine cGame.h und in dieser befindet sich ein cPlayer.h.
In cPlayer.h benutze ich die Liste, geht auch alles bis ich zum Gebrauch von Iterator komme... z.B. schon bei while (it != liste.end()) gibt er mir diese Fehlermeldung aus...
Die Liste und den Iterator erstelle ich in cPlayer.h als private Membervariablen meiner Klasse.

Wäre über jede Hilfe dankbar, bin echt am verzweifeln..
MfG Clark

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

15.02.2012, 16:03

Was genau für eine Fehlermeldung und wie genau sieht der betroffene Code aus?

3

15.02.2012, 16:10

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
26
27
28
29
class cPlayer
{
private:
    std::list<cPrimaryShot> PrimaryShotList;        // Schussliste für Feuermodus Primär
    std::list<cPrimaryShot>::iterator it;           // Schusslisteniterator

    void UpdatePrimaryShotList();                   // Updated alle Schüsse
};

void cPlayer::UpdatePrimaryShotList()
{
    // Alle schüsse updaten bzw. löschen
    it = PrimaryShotList.begin();

    while (it != PrimaryShotList.end())
    {
        it->Update();

        if (it->isAlive)
        {
            it->Render();
            it++;
        }
        else
        {
            it = PrimaryShotList.erase(it);
        }
    }
}


Woanders pushe ich:

Quellcode

1
2
3
4
5
// Schuss in Liste einfügen
    cPrimaryShot PrimaryShot;
    
    PrimaryShot.Init(PrimaryShotSprite, m_nX, m_nY, 0.0f, 200.0f);
    PrimaryShotList.push_back(PrimaryShot);


Was auch geht.
Fehlermeldung:

Zitat

Main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: bool __thiscall std::_List_const_iterator<class std::_List_val<class cPrimaryShot,class std::allocator<class cPrimaryShot> > >::operator==(class std::_List_const_iterator<class std::_List_val<class cPrimaryShot,class std::allocator<class cPrimaryShot> > > const &)const " (??8?$_List_const_iterator@V?$_List_val@VcPrimaryShot@@V?$allocator@VcPrimaryShot@@@std@@@std@@@std@@QBE_NABV01@@Z)".
1>E:\C++ NEW\Test\Debug\Test.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

15.02.2012, 16:23

Sieht mir aus als hättest du irgendwas an den Einstellungen was die Runtime Library betrifft verstellt?
In den Projekteigenschaften unter C/C++ > Code Generation stell Runtime Library auf Multitreaded DLL bzw Multithreaded Debug DLL (jeweils für den Release bzw. Debug Build).

5

15.02.2012, 19:17

Danke dir! Tatsächlich.. habe es von DLL auf Debug DLL gestellt und jetzt gehts wieder. Das ist aber nicht gut, oder? Wie soll ich denn so ein fertiges Release erzeugen?

EDIT: Oh, lasst mich raten.. Multithreaded DLL = funktioniert nur bei release... alles klar ok :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Clark« (15.02.2012, 19:29)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

15.02.2012, 23:30

Exakt. Multithreaded Dll für Release und Debug Dll für Debug ;)

Werbeanzeige