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

Lares

1x Contest-Sieger

  • Private Nachricht senden

11

13.12.2007, 11:48

Jo glaub auch mit anderen is es einfacher^^
Ob es an vista liegt, ka ich hab xp^^

Kasenoru

Frischling

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

12

13.12.2007, 15:30

Also ich habe Windows Vista und VS 2005 sowie VS 2008 und bei beiden funktionieren sämtliche SDL Programme einwandfrei. Ich wüsste auch nicht warum es nicht laufen sollte.

Bevor ich mich zu irgendwelchen großen Erklärungen herablasse mach erstmal alles wieder rückgänig was du bisher an deinem Projekt geändert hast. Oder erstelle am besten gleich ein neues LEERES(Anwendungseinstellungen->Haken bei Leeres Projekt machen) Konsolen-Projekt.

Standardmäßig landet das Projekt unter Dokumente->Visual Studio 2005->Projects. Dort siehst du nun einen Ordner mit dem Namen des Projektes. Wenn du in diesen Ordner wechselst siehst du dort wieder einen Ordner der den Namen des Projektes trägt. In diesen Ordner kopierst du nun den gesamten Quelltext von der CD, also alle .hpp und .cpp Dateien.

Nun füge alle Quelltextdateien zum Projekt hinzu(Rechtsklick auf die entsprechenedne Ordner und dann Hinzufügen->Vorhandenes Element).

Denk auch daran unter Extras->Optionen die Header und die Libs der SDL hinzuzufügen. Das ist GANZ wichtig.

Am besten du ladest dir erstmal die neueste Version der SDL herunter, die SDL auf der Buch-CD ist schon längst veraltet. Geh also auf http://www.libsdl.org und lade dir dort die neueste Version extra für VC8(Visual Studio 2005) herunter. Diese nennt sich SDL-devel-1.2.12-VC8.zip

Zitat

ich bin bis projekt->projekt eigenschaften->linker gekommen und dann?


Sehr schön, da gehst du bei deinem neuen Projekt jetzt auch wieder hin und gehst dann auf Befehlszeile und schreibst in das leere Textfeld SDL.lib

Dann gehst du zu Projekt->Projekt Eigenschaften->Konfigurationseinstellungen->Allgemein, dort gibt es den Eintrag Zeichensatz, dieser steht auf Unicode. Ändere das ganze auf Nicht festgelegt.

Jetzt kompiliere das ganze, also Projekt->Erstellen.

Nun sollte es funktionieren, sofern du alles richtig eingestellt hast. Beachte auch das alle Grafiken, Sounds, etc. die das Spiel benötigt im Ordner des Projektes liegen.

Zitat

Hallo,
ich denke es ist immer wieder eine lustige Art ein SDL Game unter Visual Studio zu compilieren.
Nimm dir lieber Code::Blocks Nightly Build und dann einfach die SDL Libs einbinden und fertig.

Sogar Code::Blocks 1.0 RC2 läuft ohne Probleme mit dem SDL Game.
Ich stell Heuteabend ein paar dl Links fürs Nightly Build rein.

Musst die Archive nur entpacken und kannst dann damit arbeiten.

MFG T-Virus


Wenn man für Windows programmiert sollte man schon die Visual Studio IDE mit dem entsprechenden Compiler von Microsoft verwenden. Die SDL funktioniert dort ebenfalls einwandfrei. Zudem kann man Code::Blocks, DevCPP und den ganzen anderen kram in meinen Augen sowieso vergessen. Die VS 2008 EEs von Microsoft sind da schon wesentlich besser. Das ist zumindest meine Meinung. Aber naja, das gehört jetzt nicht zum Thema.

Mit freundlichen Grüßen

Kasenoru

samsonispro

unregistriert

13

16.12.2007, 19:35

entschuldigung für die doofe frage aber im buch ist ja nur erklärt wie man die header und libs bei vs05 einfügt sondern nur für vs6 und vs 2003....kann mir einer sagen ob das genauso ist wie bei einem von beiden oder irgendwie abweicht?
bezieht sich hier drauf:
Denk auch daran unter Extras->Optionen die Header und die Libs der SDL hinzuzufügen. Das ist GANZ wichtig.

Kasenoru

Frischling

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

14

17.12.2007, 22:36

Unter Extras->Optionen->Projekte und Projektmappen gibt es den Eintrag VC++ Verzeichnisse. Dort kannst du die Verzeichnisse für die Header und die Libs festlegen. Oben rechts ist eine ComboBox, die steht meist auf "Ausführbare Dateien". Dort wählst du "Includedateien" und fügst der Liste unten drunter den Pfad zu dem Include-Ordner der SDL hinzu. Dann wählst du in der ComboBox "Bibilotheksdateien" aus und fügst der Liste unten drunter den Pfad zu dem Lib-Ordner der SDL hinzu.

Dann mit OK bestätigen und das wars.

Mit freundlichen Grüßen

Kasenoru

samsonispro

unregistriert

15

28.12.2007, 13:30

Sooo nun bin ich endlich wieder am Rechner...sry das ich mich solange nicht gemeldet habe :(

Ich habe genau so getan wie du mir geheißen hast... ich habe in den Optionen alles eingestellt und auch in den Projekt-Optionen den Zeichensatz verändert... mir is das jetzt langsam schon fast peinlich ich meine bin ich zu blöd um so ein Ding zu debuggen?! Ich werde jetzt mal Screenys machen von den Einstellungen und euch noch ein letztes mal damit nerven und eure gutmütige Hilfe in anspruch nehmen... echt :(

soooooo:

1>------ Erstellen gestartet: Projekt: SDL_GAME_2, Konfiguration: Debug Win32 ------
1>Verknüpfen...
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetKeyState" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_SetVideoMode" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetError" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
1>Sprite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_GetError".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Init" in Funktion ""public: bool __thiscall CFramework::Init(int,int,int,bool)" (?Init@CFramework@@QAE_NHHH_N@Z)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Quit" in Funktion ""public: void __thiscall CFramework::Quit(void)" (?Quit@CFramework@@QAEXXZ)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_PumpEvents" in Funktion ""public: void __thiscall CFramework::Update(void)" (?Update@CFramework@@QAEXXZ)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_FillRect" in Funktion ""public: void __thiscall CFramework::Clear(void)" (?Clear@CFramework@@QAEXXZ)".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_MapRGB" in Funktion ""public: void __thiscall CFramework::Clear(void)" (?Clear@CFramework@@QAEXXZ)".
1>Sprite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_SDL_MapRGB".
1>Framework.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_Flip" in Funktion ""public: void __thiscall CFramework::Flip(void)" (?Flip@CFramework@@QAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_PollEvent" in Funktion ""private: void __thiscall CGame::ProcessEvents(void)" (?ProcessEvents@CGame@@AAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall CAsteroid::Init(class CSprite *,float,float)" (?Init@CAsteroid@@QAEXPAVCSprite@@MM@Z)" in Funktion ""private: void __thiscall CGame::SpawnAsteroids(void)" (?SpawnAsteroids@CGame@@AAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall CAsteroid::Update(void)" (?Update@CAsteroid@@QAEXXZ)" in Funktion ""private: void __thiscall CGame::RenderAsteroids(void)" (?RenderAsteroids@CGame@@AAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall CAsteroid::Render(void)" (?Render@CAsteroid@@QAEXXZ)" in Funktion ""private: void __thiscall CGame::RenderAsteroids(void)" (?RenderAsteroids@CGame@@AAEXXZ)".
1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_FreeSurface" in Funktion ""public: __thiscall CSprite::~CSprite(void)" (??1CSprite@@QAE@XZ)".
1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_LoadBMP_RW" in Funktion ""public: void __thiscall CSprite::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@CSprite@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".
1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_RWFromFile" in Funktion ""public: void __thiscall CSprite::Load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Load@CSprite@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".
1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_SetColorKey" in Funktion ""public: void __thiscall CSprite::SetColorKey(int,int,int)" (?SetColorKey@CSprite@@QAEXHHH@Z)".
1>Sprite.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_UpperBlit" in Funktion ""public: void __thiscall CSprite::Render(void)" (?Render@CSprite@@QAEXXZ)".
1>Timer.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_GetTicks" in Funktion ""public: __thiscall CTimer::CTimer(void)" (??0CTimer@@QAE@XZ)".
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".
1>D:\C++\SDL_GAME_2\SDL_GAME_2\Debug\SDL_GAME_2.exe : fatal error LNK1120: 20 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://d:\C++\SDL_GAME_2\SDL_GAME_2\SDL_GAME_2\Debug\BuildLog.htm" gespeichert.
1>SDL_GAME_2 - 23 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


(Link)



(Link)



(Link)


Also mehr als auf den Screenshots gezeigt habe ich nicht eingestellt. Nicht mehr und nicht weniger. Ich hoffe ihr könnt mir noch einmal helfen :)

MfG

samson

Kasenoru

Frischling

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

16

28.12.2007, 15:08

Halb so schlimm ;)

Zitat


Zitat

ich bin bis projekt->projekt eigenschaften->linker gekommen und dann?



Sehr schön, da gehst du bei deinem neuen Projekt jetzt auch wieder hin und gehst dann auf Befehlszeile und schreibst in das leere Textfeld

Zitat

SDL.lib


Bist du dir ganz sicher das du diesen Schritt auch getan hast?

Mit freundlichen Grüßen

Kasenoru

samsonispro

unregistriert

17

28.12.2007, 16:10

Nein verdammt, aber es funktioniert immer noch nicht :(


(Link)


Ihr seit echt der hammer hier :) bei anderen Foren wurde mir nicht solange geholfen *euchlob* :-)

Kasenoru

Frischling

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

18

28.12.2007, 16:55

Dachte ich mir, da darfst du es nicht hinschreiben. ;)

Schau hier:


(Link)


Sollte danach immernoch ein kleiner Fehler kommen.
Dann füge noch über der main Funktion in main.cpp folgendes ein:


Quellcode

1
2
3
#ifdef WIN32
#undef main
#endif


Dann sollte es aber gehen.
Aufkeinenfall aufgeben ;)

Mit freundlichen Grüßen

Kasenoru

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

19

28.12.2007, 17:24

Zitat

Dachte ich mir, da darfst du es nicht hinschreiben.

Wieso sollte er das nicht dürfen? Was überhaupt^^

zum Problem:
Wenn ich mir deine Fehlermeldungen so ansehe werde ich den Verdacht nicht los, dass deine SDL Version mit sich selbst nicht ganz klar kommt. Bisst du sicher, dass SDL_Includes, SDL_Libarys und SDL_DLLs alle von der gleichen Version stammen.

Zitat


Am besten du ladest dir erstmal die neueste Version der SDL herunter, die SDL auf der Buch-CD ist schon längst veraltet.


Hast du das gemacht?
Wenn ja, dann stelle sicher, dass sämtliche alten Libs nicht mehr existieren und nicht mehr verlinkt werden.
Wenn nein, dann probier es mal, lösche zuvor aber die SDL Dateien.

Am besten du installierst die SDL noch mal komplett neu.Alle alten Dateien löschen. Die neuen runterladen einbinden etc.

Kasenoru

Frischling

Beiträge: 79

Beruf: Softwareentwickler

  • Private Nachricht senden

20

28.12.2007, 19:09

Zitat

Wieso sollte er das nicht dürfen? Was überhaupt^^


Lesen, anschauen und verstehen^^ (Nicht böse gemeint ;))

Zitat

Wenn ich mir deine Fehlermeldungen so ansehe werde ich den Verdacht nicht los, dass deine SDL Version mit sich selbst nicht ganz klar kommt. Bisst du sicher, dass SDL_Includes, SDL_Libarys und SDL_DLLs alle von der gleichen Version stammen.


Er hat einfach nur die Libs nicht gelinkt, das ist denke ich mal alles.

Zu der Sache:

Zitat

1>MSVCRTD.lib(crtexe.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".


Siehe:

Zitat

Dann füge noch über der main Funktion in main.cpp folgendes ein:



Quellcode

1
2
3
#ifdef WIN32
#undef main
#endif


Das sollte es dann hoffentlich gewesen sein.

Mit freundlichen Grüßen

Kasenoru

Werbeanzeige