Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de compilation avec mingw32 sous linux

Sujet résolu
    13 novembre 2007 à 20:03:01

    Bonjour,
    J'utilise mingw32 pour compiler mes programmes C pour windows, tout en restant sous linux, mais j'ai un problème à la compilation d'un programme utilisant SDL.
    #i586-mingw32msvc-gcc -lSDL -lSDL_image test.c -o test.exe
    /tmp/ccC8YX0X.o:test.c:(.text+0x39): undefined reference to `_SDL_Init'
    /tmp/ccC8YX0X.o:test.c:(.text+0x4b): undefined reference to `_IMG_Load'
    /tmp/ccC8YX0X.o:test.c:(.text+0x54): undefined reference to `_SDL_WM_SetIcon'
    /tmp/ccC8YX0X.o:test.c:(.text+0x6a): undefined reference to `_SDL_SetVideoMode'
    /tmp/ccC8YX0X.o:test.c:(.text+0x7f): undefined reference to `_SDL_WM_SetCaption'
    /tmp/ccC8YX0X.o:test.c:(.text+0x8f): undefined reference to `_IMG_Load'
    /tmp/ccC8YX0X.o:test.c:(.text+0xa6): undefined reference to `_SDL_UpperBlit'
    /tmp/ccC8YX0X.o:test.c:(.text+0xb6): undefined reference to `_IMG_Load'
    /tmp/ccC8YX0X.o:test.c:(.text+0xcd): undefined reference to `_SDL_UpperBlit'
    /tmp/ccC8YX0X.o:test.c:(.text+0xdb): undefined reference to `_SDL_Flip'
    /tmp/ccC8YX0X.o:test.c:(.text+0xee): undefined reference to `_SDL_FreeSurface'
    /tmp/ccC8YX0X.o:test.c:(.text+0xfc): undefined reference to `_SDL_FreeSurface'
    /tmp/ccC8YX0X.o:test.c:(.text+0x104): undefined reference to `_SDL_Quit'
    /tmp/ccC8YX0X.o:test.c:(.text+0x12a): undefined reference to `_SDL_WaitEvent'
    /usr/lib/gcc/i586-mingw32msvc/3.4.5/../../../../i586-mingw32msvc/lib/libmingw32.a(main.o):(.text+0xe3): undefined reference to `_WinMain@16'
    collect2: ld returned 1 exit status

    Est-ce bien la bonne commande pour compiler?

    la source du fichierest celle du site,chapitre afficher les images :
    1. #include <stdlib.h>
    2. #include <stdio.h>
    3. #include <SDL/SDL.h>
    4. #include <SDL/SDL_image.h> /* Inclusion du header de SDL_image */
    5. void pause();
    6. int main(int argc, char *argv[])
    7. {
    8.     SDL_Surface *ecran = NULL, *imageDeFond = NULL, *sapin = NULL;
    9.     SDL_Rect positionFond, positionSapin;
    10.     positionFond.x = 0;
    11.     positionFond.y = 0;
    12.     positionSapin.x = 500;
    13.     positionSapin.y = 260;
    14.     SDL_Init(SDL_INIT_VIDEO);
    15.     SDL_WM_SetIcon(IMG_Load("sdl_icone.bmp"), NULL);
    16.     ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
    17.     SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
    18.     imageDeFond = IMG_Load("lac_en_montagne.bmp");
    19.     SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
    20.     /* Chargement d'un PNG avec IMG_Load
    21.     Celui-ci est automatiquement rendu transparent car les informations de
    22.     transparence sont codées à l'intérieur du fichier PNG */
    23.     sapin = IMG_Load("sapin.png");
    24.     SDL_BlitSurface(sapin, NULL, ecran, &positionSapin);
    25.     SDL_Flip(ecran);
    26.     pause();
    27.     SDL_FreeSurface(imageDeFond);
    28.     SDL_FreeSurface(sapin);
    29.     SDL_Quit();
    30.     return EXIT_SUCCESS;
    31. }
    32. void pause()
    33. {
    34.     int continuer = 1;
    35.     SDL_Event event;
    36.     while (continuer)
    37.     {
    38.         SDL_WaitEvent(&event);
    39.         switch(event.type)
    40.         {
    41.             case SDL_QUIT:
    42.                 continuer = 0;
    43.         }
    44.     }
    45. }

    J'ai pris les fichiers "SDL-devel-1.2.12-mingw32.tar.gz (Mingw32)" et "SDL_image-devel-1.2.6-VC8.zip" du site de SDL que j'ai placés dans /usr/i586-mingw32msvc/lib et include et plaçé les fichiers DLL au même endroit que mon executable.

    Du coup j'ai essayé de compiler les exemples dans le pack SDL et des erreurs similaires y apparaissent.
    Pour compiler pour linux, j'utilise gcc qui marche très bien...

    Pourquoi ce bug?

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2007 à 10:05:02

      Salut cube45,

      Je n'ai pas de solution pour ton probleme, juste une alternative. Tout comme toi j'ai linux et je fait aussi de la cross compilation, pour sa j'utilise wine et DevC++ (windows), donc en gros tu installe wine sur ton pc :

      si tu es sous ubuntu :

      sudo apt-get install wine


      Ensuite tu vas sur telecharger.com et tu télécharger devc++, et tu l'install via wine.
      Une fois qu'il est installé tu suis les tuto de mateo pour installé la SDL (ou autre lib) et pour compiler tu lance DevC++ (sous wine) tu "importe" ton code et tu compile grace à la touche F9 (il me semble). :p
      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2007 à 13:19:02

        IMHO, il manque encore uen bibliothèque à linker. Sous Windows, il faut lier libmingw32.a à l'exécutable en plus des deux bibliothèques de la SDL.
        Enfin, tu es sûr qu'il ne vas pas chercher les bibliothèque de ton GCC Linux au lieu de prendre celles de MINGW ?
        • Partager sur Facebook
        • Partager sur Twitter
        J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
          14 novembre 2007 à 15:59:10

          Bonjour à tous les deux est merci pour vos réponses.
          @Poison:Passer par wine ne me plaît pas trop ... étant donné qu'il y a possibilité de passer directement avec mingw33 pour linux...
          @GuilOooo:J'ai rajouté "-lmingw32" à ma commande mais rien n'y fait.Quand à mingw32 , je pense qu'il prends les bonnes librairies car celui-ci compile bien tout ce qui est en console sans libs particulières...
          Mais comment vérifier?

          D'autres idées?
          • Partager sur Facebook
          • Partager sur Twitter

          Problème de compilation avec mingw32 sous linux

          × 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