SDL



  • Hi Leute !
    Hab mir grade SDL 1.2.4 für den DEV-C++ eingerichtet. Seltsam ist nur, wenn ich die SDL.H include läuft alles soweit, wenn ich jedoch das Programm Beende schließt sich auch wunderbar das Fenster, aber der Prozess bleibt bestehen. Wie gesagt nur wenn ich schon nur die SDL.h include 😮. Einer eine Idee was da falsch läuft ?



  • vermutlich hast du vergessen, die nachrichtenschleife zu beenden. meine nachrichtenschleifen sehen etwa so aus :

    while(!done)
    {
      while(SDL_PollEvent(&event)
      {
        switch(event)
        {
          case SDL_QUIT:
          done = true;
        }
      }
    }
    //hier jetzt aufräumen, d.h.
    SDL_Quit() //etc.
    

    weiß nicht, ob ich alle Funktionen und Konstanten richtig geschrieben habe, weil ich normalerweise in der Doku nachschauen muss, wie man sie genau schreibt 😉
    geloescht 🙄



  • Du hast vermutlich

    atexit(SDL_Quit);
    

    vergessen. Das muss nach der initialisierung und vor dem Even-Loop stehen.



  • Da habe ich extra drauf geachtet das dies drin ist. Aber selbst wenn ich das einfachste Programme schreibe will er nicht beenden. Mein Quellcode sind so aus

    #include <stdlib.h>
    #include <iostream.h>
    #include <SDL/sdl.h>
    
    int main(int argc, char *argv[])
    {
        system("PAUSE");
        return 0;
    }
    

    Trotzdem beendet er den Prozess nicht 😞



  • tja, das wird wohl nicht gehen, weil die pause nie beendet wird. denn alle ausgabe wird umgeleitet in das file "stout.txt" und eingabe wird auch nicht mehr direkt eingelesen (vll aus dem file "stdin.txt"? weiß nicht) Weil auch die Konsole unterdrückt wird kannst du keine beliebige Taste drücken -> die Pause geht nicht zu Ende.
    Von atexit() würde ich bei komplexen projekten abraten. Kann Probleme geben, ich bastle mir dann lieber meinen Aufräumcode in einen destruktor einer programmklasse. Ob das ne gute vorgehensweise ist weiß ich nciht, aber atexit() ist eben C und verträgt sich nicht ganz mit anderen Sachen imho.
    geloescht



  • SDL ist auch C. Wo soll das Problem sein?



  • Nein, SDL ist ne Grafikbibliothek. 😉 Ich denke da eher an C++ mit dem ganzen Destruktor-Zeug. Unter C wird es keine Probleme geben, außer vielleicht im Zusammenhang mit anderen Bibliotheken.



  • geloescht schrieb:

    Nein, SDL ist ne Grafikbibliothek.

    Eher sowas wie DirectX, nicht nur Grafik 😉



  • naja, irgendwo zwischen DirectX und purer Grafikbibliothek, nur für fast alle gängigen Plattformen. DirectX ist schon noch etwas größer, mit Direct3D usw.
    geloescht


Anmelden zum Antworten