C++ Problem bei der Benutzung von Listen

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Ich habe leider wiedermal ein Problem. Ich habe jetzt mehrere Stunden versucht den Fehler zu vermeiden aber konnte leider die Fehlerursache nicht genau feststellen. Ich weiß nur das sie in dem follgenden Abschnitt steckt, und durch die verwendung der STL Listen verursacht wird, weil das Programm ohne dies Fehlerfrei läuft:

Code:
// Testlevel
//
// Aufgabe: Testlevel ausführen
//
void CGame::Testlevel()
{
	//Abfrage ob schon Intaliesiert wurde
	if (m_bIntal == false)
	{

		//Wenn nein dann Intaliesieren 

		//Temporär Instanzen
		CEnemy *m_Enemy_Temp;	   //Für Gegner
		CAreaScanning *m_Area_Temp; //Für Objekte

		//Listen und Iterator
		list<CAreaScanning*> m_lArea;
		list<CAreaScanning*>::iterator iter_Area;

		list<CEnemy*> m_lEnemy;
		list<CEnemy*>::iterator iter_Enemy;
		
		
		m_Area_Temp = new  CAreaScanning(1136, 0, 0, 3000);
		m_lArea.push_back (m_Area_Temp);

		m_Enemy_Temp = new CEnemy;
		m_lEnemy.push_back(m_Enemy_Temp);

		//Es wurde schon intaliesiert
		m_bIntal = true;


		
	}

	AreaAbfragen ();
	m_Player.Update_Screen();

	//Bildschirm Ubdaten und Rendern
	m_Backgroundmap->ScreenUpdate(m_Player);
	m_Backgroundmap->ScreenRender();

	//Spieler Rendern
	m_Player.Render();

	//Alle Gegner durchlaufen und Rendern wenn Gegner im Sichtbereich ist
	for (iter_Enemy = m_lEnemy.begin (); iter_Enemy != m_lEnemy.end(); ++ iter_Enemy )
	{
			(*iter_Enemy)->Render(m_Player);
	}
	

}


// AreaAbfragen
//
// Aufgabe: Kollisonsabfragen mis Objekten durchführen
//
void CGame::AreaAbfragen ()
{
	//Abrage ob grade gesprungen wird
	if (m_Player.StatusRueckgabe() != 3)
	{
		//Wenn nein Schleifenabfrage nach Boden oder Fallen beginnen
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++iter_Area )
		{
			//Abfrage nach Boden 
			if ((*iter_Area)->Abfrage_Oben(m_Player) == true)
			{
				//Wenn boden gefunden wurde Boden kontakt bestätigen und Schleife sofort bennden
				m_bContact = true;
				break;

			}
			//Wenn kein Boden gefunden wurde dann fällt der Spieler
			else
			{
				m_bContact = false;
			}
		}

	}
	//Abfrage ob Spung an ist
	else if (m_Player.StatusRueckgabe() == 3)
	{
		//Wenn ja SChleife durchlaufen die nach Kontakt mit Objekt über Spieler sucht
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
		{
			(*iter_Area)->Abfrage_Unten(m_Player);

		}


		//Kein BOdenkontakt
		m_bContact = false;
	}

	
	//Abfrage ob Sprung "nicht" an ist
	if(m_Player.StatusRueckgabe() != 3)
	{
		//Wenn ja -> Abfrage ob Bodenkontakt da ist oder nicht
		if (m_bContact == true)
		{
			//Boden wurde gefunden also Laufen an
			m_Player.StatusAnpassen(1);
		}
		else
		{
			//kein Boden wurde gefunden also Fallen an
			m_Player.StatusAnpassen(2);
		}

	}

	//Abfrage ob grade eine BEwegung nach Links geamcht wird
	if (m_Player.MoveDirectionRueckgabe() == 1)
	{
		//Wenn ja Abfrage ob nicht Links irgendwo eine Kollison mit einem Objekt ist
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
		{
			(*iter_Area)->Abfrage_Links(m_Player);

		}

	}

	//Abfrage ob grade eine BEwegung nach Rechts geamcht wird
	if (m_Player.MoveDirectionRueckgabe() == 2)
	{
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
		{
			//Wenn ja Abfrage ob nicht Rechts irgendwo eine Kollison mit einem Objekt ist
			(*iter_Area)->Abfrage_Rechts(m_Player);

		}

	}

DIe Fehlermeldung:

Code:
1>------ Erstellen gestartet: Projekt: Super_Engine_01, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Game.cpp
1>Verknüpfen...
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class CAreaScanning * const & __thiscall std::list<class CAreaScanning *,class std::allocator<class CAreaScanning *> >::_Const_iterator<1>::operator*(void)const " (??D?$_Const_iterator@$00@?$list@PAVCAreaScanning@@V?$allocator@PAVCAreaScanning@@@std@@@std@@QBEABQAVCAreaScanning@@XZ)".
1>.\Debug/Super_Engine_01.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.
1>Super_Engine_01 - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Ich würde mich über Hilfe freuen :)
 
Sag mal hast du auch mal nur versucht, die Fehlermeldung zu lesen?
Der Fehler steckt wohl in der Klasse CAreaScanning
 
Ja natürlich hab ich das und zwar schon mehrmals. DIe Klasse CAreaScanning ist in Ordnung, weil ich sie schon vorher benutzt habe und der Fehler nur durch die benutzung der Listen Auftritt ohne die Listen gibt es keine Fehler..
 
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW"

Mir sagt diese Fehlermeldung rein gar nichts sorry, aber müsste es dann nicht irgendwie heißen Symbol so und so wurde nicht gefunden und nicht, dass auf ein nicht aufgelöstes Symbol Verweißt wird.

Also ich habe die Klasse vorher in anderer weiße verwendet ohne Fehler und wenn ich die CAreaScanning Listen weglasse dann kommt die selbe Fehlermelund nur das jetzt nicht CAreaSacnning betroffen ist sondern die Klasse CEnemy, welche ja auch in einer Liste verwendet wird.. also es muss irgendwie an den Listen liegen..
 
Linkst du mit der Release runtime library obwohl du deinen code als Debug kompilierst?
 
Das war auch sicherlich ein Fehler aber mittlerweile hab ich das verbessert indem ich eine Klasse gechrieben habe, in der die Instanzen und Listen erstellt werden und die Instanzen in die Listen geschoben werden:

Code:
include "Level.h"
#include "Player.h"
   
CLevel::CLevel()
{

    m_Backgroundmap = new CBackgroundmap("Data/test.bmp");
    m_Backgroundmap->ScreenLoad();

    m_Area_Temp = new  CAreaScanning(1136, 0, 0, 3000);
    m_lArea.push_back (m_Area_Temp);

    m_Enemy_Temp = new CEnemy;
    m_lEnemy.push_back(m_Enemy_Temp);
}

void CLevel::AreaAbfragen (CPlayer &Player)
{

    //Abrage ob grade gesprungen wird
    if (Player.StatusRueckgabe() != 3)
    {
        //Wenn nein Schleifenabfrage nach Boden oder Fallen beginnen
        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++iter_Area )
        {
            //Abfrage nach Boden
            if ((*iter_Area)->Abfrage_Oben(Player) == true)
            {
                //Wenn boden gefunden wurde Boden kontakt bestätigen und Schleife sofort bennden
                m_bContact = true;
                break;

            }
            //Wenn kein Boden gefunden wurde dann fällt der Spieler
            else
            {
                m_bContact = false;
            }
        }

    }
    //Abfrage ob Spung an ist
    else if (Player.StatusRueckgabe() == 3)
    {
        //Wenn ja SChleife durchlaufen die nach Kontakt mit Objekt über Spieler sucht
        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            (*iter_Area)->Abfrage_Unten(Player);

        }


        //Kein BOdenkontakt
        m_bContact = false;
    }


    //Abfrage ob Sprung "nicht" an ist
    if(Player.StatusRueckgabe() != 3)
    {
        //Wenn ja -> Abfrage ob Bodenkontakt da ist oder nicht
        if (m_bContact == true)
        {
            //Boden wurde gefunden also Laufen an
            Player.StatusAnpassen(1);
        }
        else
        {
            //kein Boden wurde gefunden also Fallen an
            Player.StatusAnpassen(2);
        }

    }

    //Abfrage ob grade eine BEwegung nach Links geamcht wird
    if (Player.MoveDirectionRueckgabe() == 1)
    {
        //Wenn ja Abfrage ob nicht Links irgendwo eine Kollison mit einem Objekt ist
        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            (*iter_Area)->Abfrage_Links(Player);

        }

    }

    //Abfrage ob grade eine BEwegung nach Rechts geamcht wird
    if (Player.MoveDirectionRueckgabe() == 2)
    {
        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            //Wenn ja Abfrage ob nicht Rechts irgendwo eine Kollison mit einem Objekt ist
            (*iter_Area)->Abfrage_Rechts(Player);

        }

    }

}

void CLevel::LevelRun(CPlayer &Player)
{
    AreaAbfragen (Player);
    Player.Update_Screen();

    //Bildschirm Ubdaten und Rendern
    m_Backgroundmap->ScreenUpdate(Player);
    m_Backgroundmap->ScreenRender();

    //Spieler Rendern
    Player.Render();

    //Alle Gegner durchlaufen und Rendern wenn Gegner im Sichtbereich ist
    for (iter_Enemy = m_lEnemy.begin (); iter_Enemy != m_lEnemy.end(); ++ iter_Enemy )
    {
        (*iter_Enemy)->Render(Player);
    }

}

Funktioniert leider auch nicht..

Immer noch die selbe Fehlermeldung:
Code:
1>Level.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class CAreaScanning * const & __thiscall std::list<class CAreaScanning *,class std::allocator<class CAreaScanning *> >::_Const_iterator<1>::operator*(void)const " (??D?$_Const_iterator@$00@?$list@PAVCAreaScanning@@V?$allocator@PAVCAreaScanning@@@std@@@std@@QBEABQAVCAreaScanning@@XZ)".
1>.\Debug/Super_Engine_01.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.
 
Ich hab jetzt nochmal etwas rumgebaut:

Code:
#include "Game.h"

// Konstruktor
//
// Aufgabe: Game für das Ausführen vorbereiten
//
CGame::CGame()
{

	m_Backgroundmap = new CBackgroundmap("Data/test.bmp");
	m_Backgroundmap->ScreenLoad();
	m_bListe = false;

}

// Run
//
// Aufgabe: Funktion in der das eigentliche Spiel ausgeführt wird
//
void CGame::Run()
{
	if (m_bListe == false)
	{
			CAreaScanning m_Area; //Für Objekte
			m_lArea.push_back(m_Area);
			m_bListe = true;
	}

	//SCREEN zum beschreiben vorbereiten
	g_pFramework->Update ();
	g_pFramework->Clear (); 

	//Spieler Bewegungen ubdaten
	m_Player.Update_Movement();
	
	//Level ausführen
	Testlevel();

	m_Player.Update_Screen();

	//Bildschirm Ubdaten und Rendern
	m_Backgroundmap->ScreenUpdate(m_Player);
	m_Backgroundmap->ScreenRender();

	//Spieler Rendern
	m_Player.Render();

	//SDL SCREEN Umdrehen
	g_pFramework->Flip ();

}



void CGame::AreaAbfragen ()
{
		list<CAreaScanning>::iterator iter_Area;

	//Abrage ob grade gesprungen wird
	if (m_Player.StatusRueckgabe() != 3)
	{
		//Wenn nein Schleifenabfrage nach Boden oder Fallen beginnen
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++iter_Area )
		{
			//Abfrage nach Boden 
			if (iter_Area->Abfrage_Oben(m_Player) == true)
			{
				//Wenn boden gefunden wurde Boden kontakt bestätigen und Schleife sofort bennden
				m_bContact = true;
				break;

			}
			//Wenn kein Boden gefunden wurde dann fällt der Spieler
			else
			{
				m_bContact = false;
			}
		}

	}
	//Abfrage ob Spung an ist
	else if (m_Player.StatusRueckgabe() == 3)
	{
		//Wenn ja SChleife durchlaufen die nach Kontakt mit Objekt über Spieler sucht
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
		{
			iter_Area->Abfrage_Unten(m_Player);

		}


		//Kein BOdenkontakt
		m_bContact = false;
	}


	//Abfrage ob Sprung "nicht" an ist
	if(m_Player.StatusRueckgabe() != 3)
	{
		//Wenn ja -> Abfrage ob Bodenkontakt da ist oder nicht
		if (m_bContact == true)
		{
			//Boden wurde gefunden also Laufen an
			m_Player.StatusAnpassen(1);
		}
		else
		{
			//kein Boden wurde gefunden also Fallen an
			m_Player.StatusAnpassen(2);
		}

	}

	//Abfrage ob grade eine BEwegung nach Links geamcht wird
	if (m_Player.MoveDirectionRueckgabe() == 1)
	{
		//Wenn ja Abfrage ob nicht Links irgendwo eine Kollison mit einem Objekt ist
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
		{
			iter_Area->Abfrage_Links(m_Player);

		}

	}

	//Abfrage ob grade eine BEwegung nach Rechts geamcht wird
	if (m_Player.MoveDirectionRueckgabe() == 2)
	{
		for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
		{
			//Wenn ja Abfrage ob nicht Rechts irgendwo eine Kollison mit einem Objekt ist
			iter_Area->Abfrage_Rechts(m_Player);

		}

	}

}

void CGame::Testlevel ()
{

}




// Exit
//
// Aufgabe: SPiel bennden
//
void CGame::Exit ()
{

}

Code:
#ifndef Game_HPP
#define Game_HPP
#include <list>
#include "framework.h"
#include "Player.h"
#include "Enemy.h"
#include "Level.h"
#include "AreaScanning.h"
#include "Backgroundmap.h"

class CGame
{
public:

	CGame();

	//Hauptfunktionen des Spiels
	void Run ();
	void Exit ();

	//Unterfunktionen von Run
	void Testlevel();

	//Funktionen für Level
	void AreaAbfragen ();
	


private:
	
	//Instanzen
	CPlayer m_Player; //Für Spieler
	CBackgroundmap *m_Backgroundmap;

	//Listen
	list<CEnemy> m_EnemyList; //Liste für Gegner
	list<CAreaScanning> m_lArea; //Liste für Gegner


	//Variablen
	bool m_bContact; //Speichert ob Spielerbodenkontakt hat
	bool m_bListe; //Speichert ob Liste schon gefüllt wurde..
	


	
};

#endif

Jetzt ist wieder alles in einer Klasse allerdings will die Fehlermeldung einfach nicht weggehen immer wieder das selbe.. Es muss ja irgendwie an den Listen liegen, da es ohne sie Wunderbar funktioniert. Es muss aber doch irgendwie mit Listen gehen, weil es ohne sie sehr schwer wird, das zu bewerkstäligen, was ich vorhabe.

Hat denn niemand eine Idee was ich machen muss um den Fehler zu vermeiden?
 
Zuletzt bearbeitet:
Ohh sorry hab deinen Beitrag ganz übersehen.

Ich benutze die Multithreaded-DLL (/MD) laufzeitbiblothek und kompeliere im Debugmodus.

Wenn ich da etwas anderes auswähle z.b: Multithreaded-Debug (/MTd) oder Multithreaded-Debug-DLL (/MDd) bekomme ich noch viel mehr Fehlermeldungen.

Ich hoffe das ich damit deine Frage beantwortet habe :)

Ich hab jetzt versucht auch noch in anderer Beziehung Listen einzubauen oder das ganze mit Vektoren zu machen aber alles läuft immer wieder auf die selbe Fehlermeldung hinaus..
 
Wenn du als Debug kompilierst musst du auch die Debug runtime dazulinken (denn wie du ja der Fehlermeldung entnehmen kannst fehlen die Debug-Funktionen in der release runtime).

Linkst du noch mit weiteren Bibilotheken (z.B. SDL)? Falls du bei denen auch nicht die Debug Versionen verwendest würde das die Fehler beim wechseln zur Multithreaded-Debug-DLL runtime erklären.
 
Ja ich benutze auch die Funktionen der SDL in meinem Projekt und wenn ich zur "Multithreaded-Debug-DLL" wechsle bekomme ich follgende Fehlermeldung und massig Warnungen:

Code:
1>------ Erstellen gestartet: Projekt: Super_Engine_01, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>AreaScanning.cpp
1>Backgroundmap.cpp
1>Enemy.cpp
1>Framework.cpp
1>Game.cpp
1>Logfile.cpp
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(31) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): Siehe Deklaration von 'fopen'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(49) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): Siehe Deklaration von 'fopen'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(138) : warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): Siehe Deklaration von 'vsprintf'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(157) : warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): Siehe Deklaration von 'vsprintf'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(176) : warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): Siehe Deklaration von 'vsprintf'
1>main.cpp
1>Player.cpp
1>c:\program files\super mario engine\super_engine_11\player.cpp(393) : warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(393) : warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(437) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(459) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(462) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(489) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(507) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(510) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(540) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(581) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(585) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(612) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(631) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(634) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(662) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(694) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(805) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(809) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(844) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(848) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(880) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(948) : warning C4244: '+=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(957) : warning C4244: '-=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(966) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1024) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1028) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1089) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1093) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1152) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1156) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1213) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1217) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>Sprite.cpp
1>c:\program files\super mario engine\super_engine_11\sprite.cpp(194) : warning C4244: '=': Konvertierung von 'float' in 'Sint16', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\sprite.cpp(322) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\sprite.cpp(322) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>Code wird generiert...
1>Kompilieren...
1>timer.cpp
1>Verknüpfen...
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>Das Manifest wird eingebettet...
1>mt.exe : general error c101008a: Failed to save the updated manifest to the file ".\Debug\Super_Engine_01.exe.embed.manifest". The parameter is incorrect.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.
1>Super_Engine_01 - 1 Fehler, 41 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
 
Die richtige Lösung wäre SDL (und alle anderen libs die du verwendest aber nicht als DEBUG Version hast) selbst zu kompilieren, und zwar einmal als Debug Version mit der Debug runtime, und einmal als Release mit der Release runtime. Und je nachdem wie du dein Projekt kompilierst linkst du mit der richtigen Version.

Alternativ kannst du auch versuchen in den Linkereinstellungen die msvcrt.lib zu ignorieren (in der englischen Version ist das unter Linker->Input->Ignore Specific Library). Bin mir aber nicht sicher, ob das ohne negative Nebeneffekte funktioniert.

Die vielen Warnungen haben mit dem Problem übrigens nichts zu tun.
 
Raechaer schrieb:
Die richtige Lösung wäre SDL (und alle anderen libs die du verwendest aber nicht als DEBUG Version hast) selbst zu kompilieren, und zwar einmal als Debug Version mit der Debug runtime, und einmal als Release mit der Release runtime. Und je nachdem wie du dein Projekt kompilierst linkst du mit der richtigen Version.

Wie kann ich den die einzelne Libs kompilieren?

Und nochmal ne ganz andere Frage: Der Linker ist doch einfach nur dazu da um dem Programm zu sagen wo er die eingebundenen LIbrarys findet oder?
 
Und wo finde ich diesen besagten Quellcode? Sorry aber ich habe mich bisher nur soweit mit der SDL auseinandergesetzt das ich weiß was die FUnktionen bewirken. Ich hab immer nur die Funktionen der SDL benutzt und den Quellcode nicht zu gesicht bekommen also wäre nett wenn du mir da noch etwas mehr auf die Sprünge helfen könntest ;)
 
Sorry wenn ich mich jetzt "dumm" anstelle aber ich sehe im Quelltext nur massig SDL Funktionen die ich zum Teil schon für mein Projekt benutzt habe. Denoch bin ich jetzt noch nicht schlauer geworden wie oder was ich genau kompelieren soll.
 
Zurück
Oben