C++ Problem bei der Benutzung von Listen

Die .lib Datei die du in dein Projekt einbindest (und vermutlich auch die zugehörige dll) solltest du kompilieren, und zwar einmal als Debug mit der Debug runtime und einmal als Release mit der Release runtime.

Zum Release Build deines Projekts linkst du dann die Release Version, und fürs Debuggen die Debug Version.
 
Ich mache das zum ersten mal also bitte etwas nachsicht haben.

Raechaer schrieb:
Die .lib Datei die du in dein Projekt einbindest (und vermutlich auch die zugehörige dll) solltest du kompilieren, und zwar einmal als Debug mit der Debug runtime und einmal als Release mit der Release runtime.

Soll ich also alle im Projekt Ornder befindlichen Libs irgendwie mit dem Compiler öffnen und kompelieren oder wie läuft das ab?



Raechaer schrieb:
Zum Release Build deines Projekts linkst du dann die Release Version, und fürs Debuggen die Debug Version.

Ist damit gemeint unter Projekteigenenschaffen/Linker/Allgemein zusätzliche Biblothekverzeichnisse hinzufügen?
 
Ohne dir zu Nahe treten zu wollen, aber vielleicht solltest du dich erstmal genauer darüber informieren wie mit C++ Programme erstellt werden (also Compiler, Linker, ...) und wofür die einzelnen Dateien (.h, .lib, .dll, ...) benötigt werden. Mir scheint es doch irgendwie so, dass du keine Ahnung hast was genau du eigentlich machst. Dabei kannst du dann auch gleich den Umgang mit Google üben damit du nicht jede Frage hier posten musst ;)

Ich habe SDL noch nie verwendet, kann also nur raten, aber um SDL zu benutzen musst du doch eine SDL.lib oder so ähnlich zu deinem Projekt linken. Und diese .lib Datei (die vermutlich die Einsprungspunkte in die SDL.dll enthält) ist ziemlich wahrscheinlich mit einer anderen runtime und einem anderen Compiler (und anderen compilereinstellungen) kompiliert worden. Um diese lib nun passed zu deinem Projekt neu zu erstellen besorgst du dir den Code von SDL und kompilierst ihn (wie das geht steht irgendwo in einer readme). Anstatt der alten SDL.lib nimmst du dann deine selbst erstellte und die Sache sollte funktionieren.

Unter Umständen wirst du den mt.exe Fehler aber auch einfach los indem du dein Projekt komplett neu erstellst (über Build->Rebuild Solution). Ist zwar nicht die feine Art verschiedene Runtimes zu linken aber vielleicht hast du ja Glück und es funktioniert.
 
Ich habe mir jetzt die "SDL-1.2.13" runtergeladen und versucht den Instruktionen zu follgen. Ich habe im Haupt Ordner das VisualC Archiv entpackt und den INhalt dann mit Visual Studio 2008 geöffnet. Und veruscht zu kompelieren.

Dabei gab es follgende Fehlermeldung:

Code:
1>c:\documents and settings\x\desktop\sdl-1.2.13\src\video\windx5\directx.h(81) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "dsound.h": No such file or directory
1>SDL_dx5video.c
1>c:\documents and settings\x\desktop\sdl-1.2.13\src\video\windx5\directx.h(81) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "dsound.h": No such file or directory
1>SDL_dx5events.c
1>c:\documents and settings\x\desktop\sdl-1.2.13\src\video\windx5\directx.h(81) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "dsound.h": No such file or directory
1>SDL_dx5audio.c
1>c:\documents and settings\x\desktop\sdl-1.2.13\src\audio\windx5\directx.h(81) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "dsound.h": No such file or directory

Habe ich überhaupt die richtige Version der SDL die auch für VS 2008 geeignet ist?
Und was hab ich falsch gemacht?
 
Ich hab mich entschieden wieder mit Visual C++ 6.0 weiter zu arbeiten. Ich hab jetzt da ein neues Projekt gestartet und die mit Visual C++ 6.0 kompelierten SDL Datein eingebunden. Und siehe da es läuft ohne Probleme. Die Geschichte mit Visual 2008 wurde mir einfach zu komplieziert. Ich kann mich ja erstmal auf den alten Compiler konzentrieren und mich dann später mit Visual 2008 befassen.

Okey ich hab jetzt noch ein Problem, welches jetzt aber denk ich direkt mit den Listen zutun hat..

Ich möchte gerne zweimal hintereinander die selbe Liste komplett durchlaufen was bei mir nicht funktioniert..


Code:
	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();

	list<CAreaScanning>::iterator itArea;

	//Bodenkontakt zurücksetzen
	m_bContact = false;

	//ALle Objekte durchlaufen
	for (itArea = m_lArea.begin(); itArea != m_lArea.end(); ++ itArea)
	{
		//Abfrage ob Sprung aus ist
		if (m_Player.StatusRueckgabe() != 3)
		{
			//Wenn ja Abfrage ob Spieler Bodenkontakt hat
			if (itArea->Abfrage_Oben(m_Player) == true)
			{
				//Wenn ja Bodenkontakt bestätigen
				m_bContact = true;

			}
	
		}
	
	}

	//Abfrage ob Sprung aus ist
	if (m_Player.StatusRueckgabe() != 3)
	{
		//Wenn ja -> Abfrage ob Kontakt da ist
		if(m_bContact == true)
		{
			//Wenn ja -> Bodenmove an
			m_Player.StatusAnpassen(1);
		}
		else
		{
			//Wenn nein Fallen an
			m_Player.StatusAnpassen(2);
		}

	}

	
	

		//Abfrage ob Sprung aus ist
		if (m_Player.StatusRueckgabe() != 3)
		{
			//Wenn ja -> Alle Objekte Durchlaufen und Kollisonsabfrage durchführen Unten
			for (itArea = m_lArea.begin(); itArea != m_lArea.end(); ++ itArea)
			{
				itArea->Abfrage_Unten(m_Player);


			}
		}

Wenn ich die erste Liste alleine stehen hab bzw die zweite auskommentiere funktioniert es. Beide Listendurchläufe werden aber vom Programm nicht geduldet. Ich kriege keine direkte Kompilerfehlermeldung aber es wird mir follgender KOnsolenauswurf angezeigt:

Fatal Signal: Segementation Fault <sdl parachute deployed>

Wie kann ich jetzt zweimal durch die ganze Liste laufen lassen ohne einen Fehler herbeizuführen?
 
Zuletzt bearbeitet:
Zurück
Oben