Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL en C++

Sujet résolu
    24 avril 2008 à 21:13:02

    Bonsoir,
    je commance le C++ après avoir fait du C et j'ai voulu tester ça:



    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <SDL/SDL.h> 
    
    using namespace std;
    
    int main(int argc, char *argv[]) 
    { 
           
    string maChaine = "Bonjour !";
     cout << "Longueur de la chaine : " << maChaine.size()<< endl;
    
      system("PAUSE");
        return EXIT_SUCCESS;
    }
    



    j'ai mis les dll que je mettais en C pour SDl et

    -lmingw32
    -lSDLmain
    -lSDL
    dans project option, parameters, linker.

    Le programme ce lance, il n'y a pas d'erreur, mais ça reste noir, rien ne s'affiche.
    Si j'enleve le include de SDL.h, ça marche.

    Pourriez vous m'aider? (la question est sans doutes triviale..)



    • Partager sur Facebook
    • Partager sur Twitter
      24 avril 2008 à 21:16:31

      SDL qui redirige la sortie standard sûrement.
      • Partager sur Facebook
      • Partager sur Twitter
        24 avril 2008 à 21:20:30

        Quand tu fais un projet SDL, la console part à l'ouest, les flux de sortie (cout, cerr, etc...) sont redirigés par la SDL. Ceci doit être fait dans SDL.h justement (enfin, dans l'un des headers inclus par ce fichier), donc ne pas l'inclure ne redirige pas les flux, et cout envoie direct sur la console.

        Tu verras que si ton programme plante, un fichier texte d'erreur est créé à coté de l'executable, "cerr" a donc été redirigé vers ce fichier (par défaut c'est la console aussi en C++).

        Si tu veux récupérer ce que tu envoies sur cout, ben faut savoir vers où est redirigé cout, me suis jamais posé la question :)

        Sinon, ajoute aussi "-mwindow" aux options du linker, ça permet de ne pas avoir de fenetre de console inutile quand tu lances l'exécutable, seule la fenetre que tu créeras sera visible sur le systeme d'exploitation ;)
        • Partager sur Facebook
        • Partager sur Twitter
          24 avril 2008 à 21:55:54

          Suis con...,
          erreur qui a rien à voir avec C++ en fait.. :

          #include <stdlib.h>
          #include <stdio.h>
          #include <SDL/SDL.h>
          #include <iostream>
          
          using namespace std;
          
             void pause();
          
          int main(int argc, char *argv[])
          {
          
              SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL
              SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // Ouverture de la fenêtre
              
          cout << "Hello world!" << endl;
            
              pause(); // Mise en pause du programme 
              SDL_Quit(); // Arrêt de la SDL
              
              return EXIT_SUCCESS; // Fermeture du programme
          }
           
          void pause()
          {
              int continuer = 1;
              SDL_Event event;
           
              while (continuer)
              {
                  SDL_WaitEvent(&event);
                  switch(event.type)
                  {
                      case SDL_QUIT:
                          continuer = 0;
                  }
              }
          }
          


          affiche parfaitement la fenetere et ecrit dans stdout.txt correctement.



          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            24 avril 2008 à 22:00:38

            En C++, pas de #include <stdlib.h> et #include <stdio.h>. Si tu les veux vraiment utilise <cstdlib> et <cstdio> (mais bon...).
            • Partager sur Facebook
            • Partager sur Twitter

            SDL en C++

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown