IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse C & C++ Discussion :

Affichage SDL sous Eclipse avec Windows64


Sujet :

Eclipse C & C++

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Affichage SDL sous Eclipse avec Windows64
    Bonjour,

    J'ai un simple programme sous Eclipse qui compile très bien (après plusieurs heures d'efforts pour installer le compilateur c/c++, puis MinGW, freeglu...)

    Mais au moment où je veux le lancer, aucune fenêtre. Ce programme marche sous Linux mais avec Eclipse, rien.

    J'ai essayé différentes façons de commenter et il semble que l’exécution se bloque au moment où se réalise une instruction SDL quelconque.

    Un simple printf passe, mais si j'ai une fonction avant (même non utilisée) qui fait un SDL_GL_SwapBuffers(); par exemple, eh bien rien du tout, même le printf dans le main ne passe plus, l’exécution se bloque totalement.

    Voici le code, c'est censé dessiner un pauvre plan rouge sur une fenêtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    #include <stdlib.h>
    #include <stdio.h>
     
    #include <SDL/SDL.h>
    #include <GL/glu.h>
    #include <GL/gl.h>
     
    /**
     * Initialisation de la SDL, création du contexte OpenGL et ouverture de la fenetre.
     */
    void init_SDL() {
      SDL_Init(SDL_INIT_VIDEO); //BLOQUE ICI!!!!
     
      if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) == -1) {
        fprintf(stderr, "Impossible d'activer le double buffer\n");
        SDL_Quit();
        exit(EXIT_FAILURE);
      }
     
      SDL_WM_SetCaption("SDL B-A-BA",NULL);
     
      if (SDL_SetVideoMode(640, 640, 32, SDL_OPENGL) == NULL) {
        fprintf(stderr, "Impossible de passer en mode OpenGL : %s\n", SDL_GetError());
        SDL_Quit();
        exit(EXIT_FAILURE);
      }
    }
     
    /**
     * Initialisation des états du contexte OpenGL.
     */
    void init_GL(void) {
        glClearColor(1., 1., 1., 0.);
    }
     
    /**
     * Affichage de la scène OpenGL.
     */
    void display() {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
      // On dessine un carré rouge dans le plan Oxy
      glColor3f(1.0, 0.0, 0.0);
      glBegin(GL_QUADS);
      glVertex3f(-.2, -.2, 0.);
      glVertex3f(.2, -.2, 0.);
      glVertex3f(.2, .2, 0.);
      glVertex3f(-.2, .2, 0.);
      glEnd();
     
      SDL_GL_SwapBuffers();
     
      GLenum erreur;
      if ((erreur = glGetError()) != GL_NO_ERROR) {
        fprintf(stderr, "Erreur OpenGL dans display : %s\n", gluErrorString(erreur));
      }
     
    }
     
    /**
     * Gestion du clavier.
     * @param event l'évènement SDL ayant déclenché l'appel à la fonction
     * (doit etre de type SDL_KEYDOWN).
     */
    int keyboard(SDL_Event * event) {
      if (event->type == SDL_KEYDOWN) {
        switch(event->key.keysym.sym) {
        case SDLK_ESCAPE:
          return 0;
        default:
          break;
        }
      }
     
      return 1;
    }
     
    int WinMain(int argc, char *argv[]) {
      printf("toto");
      init_SDL();
      init_GL();
     
      int continuer = 1;
      SDL_Event event;
     
      // Boucle traitant les évènements de la fenetre
      while (continuer) {
        // On attend le prochain évènement
        SDL_WaitEvent(&event);
        // On traite l'évènement
        switch (event.type) {
        case SDL_QUIT:
          // On a fermé la fenetre
          continuer = 0;
          break;
        case SDL_KEYDOWN:
          // On a appuyé sur une touche
          continuer = keyboard(&event);
          break;
        }
        display();
      }
     
      // C'est fini : on libère les ressources proprement
      SDL_Quit();
     
      return EXIT_SUCCESS;
    }
    Quelqu'un aurait-il une idée de pourquoi l’exécution se bloque au passage des instructions SDL, alors que la compilation passe ?

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    J'ai eu le même symptôme en essayant de lancer un "Helloworld SDL".

    Pour résoudre ça, j'ai tenté de lancer le .exe en ligne de commande et là, j'ai vu une fenêtre m'expliquant que je n'avais pas SDL.dll...

    Peut-tu essayer de prendre SDL.dll et le mettre dans C:\Windows\system ou C:\Windows\System32 ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 67
    Points : 21
    Points
    21
    Par défaut
    Si je ne me trompe pas, le sdl.dll doit être dans le dossier du projet, s'il est installé.

    Il faut aussi que le SDL soit installé sur le PC.

Discussions similaires

  1. problème affichage applet sous eclipse
    Par nebcul dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 14/12/2007, 19h06
  2. link sous Eclipse avec mingw32-make et DLL Visual
    Par eag35 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/04/2007, 09h22
  3. Erreur sous eclipse avec Scanner
    Par bugland dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 11/01/2007, 15h28
  4. [Tomcat]application Web sous eclipse avec Tomcat 5.5.12
    Par toda dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/12/2005, 03h07
  5. [Plugin]Lancement d'un projet JSP sous Eclipse avec Tomcat
    Par samios dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 25/08/2004, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo