Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compilation impossible

C++ & SDL

Sujet résolu
Anonyme
    22 septembre 2007 à 3:40:13

    Bonsoir tout le monde.

    Voilà, j'ai déjà utilisé la SDL (il y a un moment) en suivant le cours sur le C et j'aimerais faire le tp "Mario Sokoban" en C++ cette fois.
    Je précise que je suis débutant aussi bien en C qu'en C++.

    J'ai donc tapé un code de base pour créer une simple fenêtre (pas de mémoire mais presque :p ) et là ... Le compilateur me crache une insulte que je ne comprend pas. :(

    Voici mon fichier "main.cpp" :
    1. #include <iostream>
    2. #include <fstream>
    3. #include <string>
    4. #include <SDL/SDL.h>
    5. #include <SDL/SDL_image.h>
    6. #include <SDL/SDL_ttf.h>
    7. #include "common.h"
    8. using namespace std;
    9. int main(int argc, char *argv[]) {
    10.     SDL_Init(SDL_INIT_VIDEO);
    11.     SDL_Surface *screen = NULL;
    12.     screen = SDL_SetVideoMode(WINDOW_WIDTH, WINDOW_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    13.     SDL_WM_SetCaption("Test C++ & SDL", NULL);
    14.     SDL_Event event;
    15.     bool render = true;
    16.     while(render) {
    17.         SDL_WaitEvent(&event);
    18.         switch(event.type) {
    19.             case SDL_QUIT:
    20.                 render = false;
    21.                 break;
    22.         }
    23.         SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
    24.         SDL_Flip(screen);
    25.     }
    26.     SDL_Quit();
    27.     return 0;
    28. }

    Mon fichier "common.h" (impossible que l'erreur vienne de là mais bon ^^ ) :
    1. #ifndef COMMON_H
    2. #define COMMON_H
    3.     #define WINDOW_WIDTH 800        // Largeur de la fenêtre
    4.     #define WINDOW_HEIGHT 600       // Hauteur de la fenêtre
    5. #endif

    Et la jolie insulte du compilateur :
    Project   : Console application
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\Documents and Settings\Jean_Mich\Mes documents\Mine\Programmation\Sokoban\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: src\main.cpp
    Linking executable: sokoban.exe
    C:\Program Files\CodeBlocks\lib/libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 1 seconds)


    Je précise que j'ai linké la SDL et que j'ai réglé le projet en "GUI Application".
    Voilà, je ne comprend absolument pas ce que veut dire ce message d'erreur et le résultat est que, ben ça compile pas et ça me bloque. :p

    Un gros merci d'avance à ceux qui se pencherons sur mon problème !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 septembre 2007 à 9:45:08

      Si tu mets ce main :
      1. int main ( int argc, char** argv )

      ça marche? (Il faut qu'il ai la bonne "forme" pour que la sdl puisse fonctionner.)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 septembre 2007 à 16:06:19

        Salut,

        Tout d'abord, merci pour ta réponse.
        Je ne connais pas du tout les paramètres du "main" donc j'avais repris ceux du cours de M@teo. ^^

        Et non, ça ne fonctionne toujours pas, le compilateur me sort toujours la même erreur. :(
        Petit rappel :

        Project   : Console application
        Compiler  : GNU GCC Compiler (called directly)
        Directory : C:\Documents and Settings\Jean_Mich\Mes documents\Mine\Programmation\Sokoban\
        --------------------------------------------------------------------------------
        Switching to target: default
        Compiling: src\main.cpp
        Linking executable: sokoban.exe
        C:\Program Files\CodeBlocks\lib/libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
        collect2: ld returned 1 exit status
        Process terminated with status 1 (0 minutes, 4 seconds)

        Est-ce normal d'avoir des anti-slashes puis des slashes dans le même chemin ?
        • Partager sur Facebook
        • Partager sur Twitter
          22 septembre 2007 à 16:23:06

          As-tu bien linké les bibliothèques SDL?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            22 septembre 2007 à 16:25:57

            Citation : Jean_Mich

            Je précise que j'ai linké la SDL et que j'ai réglé le projet en "GUI Application".


            Voici quand même un screen au cas où :

            Image utilisateur



            EDIT : Problème résolu.
            A force de chercher sur google, j'ai trouvé cette ligne à rajouter dans "Other Linker Options".

            -lmingw32 -lSDLmain -lSDL

            Ligne que je n'avais pas eu à rajouter quand j'avais suivi le tuto de M@teo sur le C (et dont il ne fait pas mention).
            M'enfin maintenant ma fenêtre s'affiche, J_M est content. :p
            • Partager sur Facebook
            • Partager sur Twitter

            Compilation impossible

            × 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