Zugriffsverletzung beim Verwenden der SDL Bibliothek
-
Hallo Liebe C++ Gemeinde,
habe vor kurzem ein SDL Turtorial durchgearbeitet und sitze nun an Pacman dran.
Hierbei bekomme ich eine Zugriffsverletzung.Ausnahme (erste Chance) bei 0x68125930 (SDL.dll) in blabdalbala.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000
Unbehandelte Ausnahme bei 0x68125930 (SDL.dll) in blabdalbala.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000
Der Thread 0xdc0 hat mit Code 0 (0x0) geendet.
Der Thread 0x1504 hat mit Code 0 (0x0) geendet.
Der Thread 0x15ec hat mit Code 0 (0x0) geendet.
Das Programm "[4396] blabdalbala.exe" wurde mit Code 0 (0x0) beendet.in meiner main.cpp startet er das debuggen und läuft auch durch bis
if((Surf_Background = ImageLoad("media/bg.png")) == NULL) {
cerr << "Cannot load file: media/bg.png\n";
return false;
}beim Imageload springt er zu meiner Imageload Funktion in meiner Graphics.h.
SDL_Surface* ImageLoad(char* File) {
SDL_Surface* Surf_Temp = IMG_Load(File);
SDL_Surface* Surf_Temp2 = SDL_DisplayFormat(Surf_Temp);
SDL_FreeSurface(Surf_Temp);
return Surf_Temp2;
};Mit Haltepunkt seh ich dann, dass er die bg.png Datei sauber einfügt. Aber das Surf_Temp wird auf 0x00000000 gesetzt, beim nächsten Schritt schmiert er dann ab.
Ich hoffe ihr könnt mir weiterhelfen.
MfG
Rennmoehre
-
Rennmoehre schrieb:
... dass er die bg.png Datei sauber einfügt.
Das heißt was?
Rennmoehre schrieb:
Aber das Surf_Temp wird auf 0x00000000 gesetzt, beim nächsten Schritt schmiert er dann ab.
Das Bild wird also nicht geladen. Du prüfst aber nicht auf Fehler, sondern lässt das Programm weiter laufen. Warum wunderst du dich über den Absturz?
In der Doku (http://www.libsdl.org/projects/docs/SDL_image/SDL_image_7.html))
steht, wie auf Fehler geprüft werden kann:// load sample.png into image SDL_Surface *image; image=IMG_Load("sample.png"); if(!image) { printf("IMG_Load: %s\n", IMG_GetError()); // handle error }
-
Ich meine wenn ich mit dem Debugger durchgehe fügt er den Pfad zur bg.png richtig ein.
Das zweite hat mir weitergeholfen danke. Er kompiliert das Programm jetzt komplett und beendet es mit -1 das hilft mir schon mal weiter

Habe SDL_Surface* Surf_Temp jetzt vorher sauber auf NULL gesetzt und die Error Abfrage eingefügt. Aber trotzdem wird Surf_Temp weiterhin auf 0x00000000 gesetzt das sollte nicht sein.
-
Und wie lautet die Fehlermeldung?
-
Cannot load file: media/bg.png is ja klar wenn er die Datei in Surf_Temp nicht richtig speichern kann. Verstehe nicht wieso??
-
Rennmoehre schrieb:
Cannot load file: media/bg.png is ja klar wenn er die Datei in Surf_Temp nicht richtig speichern kann. Verstehe nicht wieso??
???
Das ist deine eigene Meldung. Was gibt IMG_GetError() zurück?
Wenn ich dir schon die Doku heraussuchen muss, könntest du sie wenigstens lesen.
-
OH Sorry also wenn ich normal starte läd er alles und beendet mit -1. Mehr passiert nicht...
Beim Schritt für Schritt durchgehen kommt bei printf zurückgegeben 37 raus hilft dir das vielleicht?
bin noch ein ziemlicher anfänger hab noch nicht so viel Ahnung davon..
-
Ok hat sich erledigt. Anscheinend war mein Ordner mit den .pngs ins falsche Verzeichniss verrutscht *peinlich*