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

18.08.2010, 22:38

SDL - Das Programm wurde mit Code 0x1 beendet.

Hi,
Ich habe diese Tutorialseite benutzt, um mich etwas in SDL einzuarbeiten.

Ich habe die SDL.dll in mein Debug&Release Ordner eingefügt und folgenden Code benutzt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 #include <stdlib.h>
 #include <SDL/SDL.h>
 int main(int argc, char *argv[])
 {
    SDL_Surface *screen, *image;
    SDL_Event event;
    int done = 0;
    if (SDL_Init(SDL_INIT_VIDEO) == -1) {
        printf("Can't init SDL:  %s\n", SDL_GetError());
        exit(1);
    }
    atexit(SDL_Quit); 
    screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE);
    if (screen == NULL) {
        printf("Can't set video mode: %s\n", SDL_GetError());
        exit(1);
    }
    image = SDL_LoadBMP("tux.bmp");
    if (image == NULL) {
        printf("Can't load image of tux: %s\n", SDL_GetError());
        exit(1);
    }
    SDL_BlitSurface(image, NULL, screen, NULL);
    SDL_FreeSurface(image);
    SDL_UpdateRect(screen, 0, 0, 0, 0);
    while (!done) {
        while (SDL_PollEvent(&event)) {
            switch(event.type) {
            case SDL_QUIT:
                done = 1;
                break;
            }
        }
    }
    return 0;
 }

Es ist ziehmlich komisch, dass es nicht funktioniert.
Ich habe auch folgendes vom ersten Tutorial beachtet:

Zitat

  • Unter "Extras / Optionen / Projekte und Projektmappen / VC++-Verzeichnisse" das Verzeichnis der Header-Files sowie der Library-Files angeben. Dazu auf das Ordnersymbol klicken, dann auf die Dreipunkte und von da aus in das eben extrahierte Verzeichnis, ins Unterverzeichnis "lib" und auf Öffnen klicken.
  • Unter "Projekt / Eigenschaften / Linker / Eingabe / Zusätzliche Abhängigkeiten" SDLmain.lib SDL.lib eintragen.
  • Unter "Projekt / Eigenschaften / Linker / Eigenschaften / SubSystem" Windows(/SUBSYSTEM:WINDOWS) auswählen. Das verhindert, dass die Konsole angezeigt wird.
  • Unter "Projekt / Eigenschaften / C/C++ / Codegenerierung / Laufzeitbibliothek" Multi-Threaded DLL (/MD) auswählen.
Weiß einer, was da schief gelauefn ist?

Wäre nett würdet ihr mir helfen :)

Mfg
LittleProgger


Edit:
Das Thema kann geschlossen/gelöscht werden, habe zwar keine direkte Lösung für das oben genannte Problem, aber brauche die Lösung auch nicht mehr

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LittleProgger« (18.08.2010, 22:46)


2

18.08.2010, 23:18

Wuerde mal schaetzen das die Bilddatei nicht in dem Verzeichnis der exe ist.

3

18.08.2010, 23:20

Tipp: Erst Fehlermeldung ausgeben, dann Programm beenden! ;)

Gruß
SaRu_

denjo

Treue Seele

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

4

19.08.2010, 18:34

Die SDL sollte zusätzlich auch beendet werden, d.h. nach deiner while nen SDL_Quit()!
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

5

19.08.2010, 18:45

Anstatt das exit ( ) ; würde ich ebenfalls return benutzen!

MfG Stazer

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

6

19.08.2010, 18:51

Die SDL sollte zusätzlich auch beendet werden, d.h. nach deiner while nen SDL_Quit()!

Irre ich mich oder wird die per atexit registrierte shutdown Methode (hier also SDL_Quit) nicht bei jeder Form von Programm Ende ausgeführt?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Quin

Frischling

Beiträge: 23

Wohnort: Engelthal

  • Private Nachricht senden

7

19.08.2010, 23:09

Du hast die tux.bmp nicht im Verzeichnis :whistling:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Quin« (19.08.2010, 23:14)


denjo

Treue Seele

Beiträge: 163

Wohnort: BLB

  • Private Nachricht senden

8

21.08.2010, 12:57

Die SDL sollte zusätzlich auch beendet werden, d.h. nach deiner while nen SDL_Quit()!

Irre ich mich oder wird die per atexit registrierte shutdown Methode (hier also SDL_Quit) nicht bei jeder Form von Programm Ende ausgeführt?

Hast recht, hab die atexit-Zeile überlesen ;-).
"Irren ist menschlich, Vergeben göttlich."
- Alexander Pope -

Werbeanzeige