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

21.11.2017, 22:16

Beispiel in Kapitel 12 spuckt nach beenden der main funktion Fehlermeldung aus

hallo,

Ich versuche derzeit das Beispiel-Spiel in Kapitel 12 "Ein spiel mit der SDL" des Buches fehlerfrei zum Laufen zu kriegen (bevor ich anfange es zu erweitern :) ).
Das Spiel hängt sich bei mir beim Beenden auf. Beim durchprobieren mit std::cout hab ich herausbekommen dass es bis zum return 0; kommt dort irgendwo dann Abstürzt.
Daraufhin hab ich einfach alles aus der main funktion gestrichen so dass nurnoch:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include "SDL.h"
#include "SDL_main.h"

extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }

int main(int argc, char *argv[])
{
    return 0;
}

Ich hab gelesen dass die main funktion hier nicht die wirkliche main funktion ist sondern von der SDL aufgerufen wird.
Da ich nun schon länger nach Lösungen suche, und alles was ich finde Probleme beim Einbinden der SDL sind jetzt die Frage an euch: Weiß jemand woran genau dies liegt (und wie man es beheben kann)?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

21.11.2017, 22:32

Was hat es mit diesem __iob_func auf sich? Was passiert, wenn du diese Zeile auskommentierst?

3

22.11.2017, 00:17

Die Zeile hatte ich eingefügt um einen LINK error zu umgehen. Soweit ich das verstanden hab ist die Funktion seit MVS 2015 anders definiert als früher und spuckt somit einen LINK fehler aus
(https://stackoverflow.com/questions/3041…p-iob-func-sdl2).
Wenn ich die Zeile rauskommentiere tritt dieser LINK error komischerweise nichtmehr auf. Das Programm hat aber immernoch das Problem mit dem Absturz am ende der main funktion.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

22.11.2017, 07:56

Wenn du das Programm mit F5 startest (Debuggen), was kommt denn dann für eine Meldung beim Absturz?

5

22.11.2017, 09:44

Beim Starten im Debugger bekomm ich:
Ausnahmefehler bei 0x00A31388 in SDL_Game.exe: 0xC0000005: Zugriffsverletzung beim Ausführen an Position 0x00A31388
SDL_Game ist hierbei der name des Spiels und somit auch der erstellten .exe.
Hab jedoch keine Ahnung wie man genaue Funktionen des Debuggers in MVS 2017 verwendet.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

22.11.2017, 09:51

Wahrscheinlich würde es helfen, wenn du eine SDL-Version benutzt, die ebenfalls mit Visual C++ 2017 kompiliert wurde. Notfalls selber kompilieren - ist nicht so kompliziert.

7

22.11.2017, 11:34

Hab die SDL selber komilliert. Gab zwar einige Schwierigkeiten aber jetzt funktioniert alles wie es sollte. Danke für die Hilfe

Werbeanzeige