Partage
  • Partager sur Facebook
  • Partager sur Twitter

[FMOD] Impossible de compiler

Sujet résolu
    8 mai 2006 à 22:07:40

    Bonjours (enfin..re-bonjours lol)

    J'ai installer la derniere version de Fmod et je n'arrive pas a compiler...

    Voila ce que me retourne le compilo :
    lydriel@******:~/programmes/HikariStudio/title$ make
    gcc main.c -o main -lSDLmain -lSDL -lSDL_image /usr/lib/libfmodex.so
    main.c: In function ‘main’:
    main.c:25: erreur: ‘FSOUND_Sample’ undeclared (first use in this function)
    main.c:25: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
    main.c:25: erreur: pour chaque fonction dans laquelle il apparaît.)
    main.c:25: erreur: ‘son’ undeclared (first use in this function)
    main.c:25: erreur: ‘FSOUND_FREE’ undeclared (first use in this function)
    main.c:25: erreur: ‘FSOUND_NORMAL’ undeclared (first use in this function)
    make: *** [all] Erreur 1


    Voila le Makefile (vous moquez pas :p )
    all:
            gcc main.c -o main -lSDLmain -lSDL -lSDL_image /usr/lib/libfmodex.so


    Et voila mon code source

    #include <stdio.h>
    #include <stdlib.h>

    // Includes SDL
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>

    // Includes FMOD
    #include <fmod/fmod.h>
    #include <fmod/fmod_codec.h>
    #include <fmod/fmod_dsp.h>
    #include <fmod/fmod_output.h>

    int main(int argc, char *argv[])
    {
            // Déclaration des variables
            SDL_Surface *ecran = NULL, *bg = NULL, *curseur = NULL;
            SDL_Rect position_bg, position_curseur;
            SDL_Event event;
            int continuer = 1, niv_curseur = 1;
           
            // Initialisation FMOD
            FSOUND_Init(44100,16,0);
           
            FSOUND_Sample * son = FSOUND_Sample_Load(FSOUND_FREE,"curseur.wav",FSOUND_NORMAL,0,0);
                   
            // Initialisation de la SDL
            SDL_Init(SDL_INIT_VIDEO);
           
            ecran = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
            SDL_WM_SetCaption("Hikari Studio",NULL);
           
            SDL_ShowCursor(SDL_DISABLE);

            position_bg.x = 0;
            position_bg.y = 0;
            bg = IMG_Load("background/title.jpg");
           
            position_curseur.x = 58;
            position_curseur.y = 516;
            curseur = IMG_Load("curseur.bmp");
            SDL_SetColorKey(curseur,SDL_SRCCOLORKEY,SDL_MapRGB(curseur->format,255,0,0));
           
            SDL_EnableKeyRepeat(200,100);
           
            while(continuer)
            {
                   
                    SDL_WaitEvent(&event);
                   
                    switch(event.type)
                    {
                            case SDL_QUIT:
                                    continuer = 0;
                                    break;
                            case SDL_KEYDOWN:
                                    switch(event.key.keysym.sym)
                                    {
                                            case SDLK_ESCAPE:
                                                    continuer = 0;
                                                    break;
                                            case SDLK_RIGHT:
                                                    FSOUND_PlaySound(FSOUND_FREE,son);
                                                    if(niv_curseur == 1)
                                                    {
                                                            niv_curseur = 2;
                                                            position_curseur.x = 338;
                                                    }
                                                    else if(niv_curseur == 2)
                                                    {
                                                            niv_curseur = 3;
                                                            position_curseur.x = 542;
                                                    }
                                                    else if(niv_curseur == 3)
                                                    {
                                                            niv_curseur = 1;
                                                            position_curseur.x = 58;
                                                    }
                                                    break;
                                            case SDLK_LEFT:
                                                    FSOUND_PlaySound(FSOUND_FREE,son);
                                                    if(niv_curseur == 1)
                                                    {
                                                            niv_curseur = 3;
                                                            position_curseur.x = 542;
                                                    }
                                                    else if(niv_curseur == 2)
                                                    {
                                                            niv_curseur = 1;
                                                            position_curseur.x = 58;
                                                    }
                                                    else if(niv_curseur == 3)
                                                    {
                                                            niv_curseur = 2;
                                                            position_curseur.x = 338;
                                                    }
                                                    break;
                                            case SDLK_RETURN:
                                                    if(niv_curseur == 3)
                                                    {
                                                            continuer = 0;
                                                            break;
                                                    }
                                                    break;
                                    }
                                    break;
                    }
                   
                    SDL_BlitSurface(bg,NULL,ecran,&position_bg);
                    SDL_BlitSurface(curseur,NULL,ecran,&position_curseur);
                    SDL_Flip(ecran);
                   
            }
           
            SDL_FreeSurface(bg);
            SDL_FreeSurface(curseur);
            FSOUND_Sample_Free(son);
            FSOUND_Close();
            SDL_Quit();
           
    }


    Si quelqu'un pourrais m'aider s'il vous plait !

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2006 à 13:48:23

      gcc -o main main.c -lSDLmain -lSDL -lSDL_image -lFMOD
      • Partager sur Facebook
      • Partager sur Twitter
        12 mai 2006 à 22:06:33

        Sa ne marche pas...

        lydriel@******:~/programmes/HikariStudio/title$ gcc -o main main.c -lSDLmain -lSDL -lSDL_image -lFMOD
        main.c: In function ‘main’:
        main.c:25: erreur: ‘FSOUND_Sample’ undeclared (first use in this function)
        main.c:25: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
        main.c:25: erreur: pour chaque fonction dans laquelle il apparaît.)
        main.c:25: erreur: ‘son’ undeclared (first use in this function)
        main.c:25: erreur: ‘FSOUND_FREE’ undeclared (first use in this function)
        main.c:25: erreur: ‘FSOUND_NORMAL’ undeclared (first use in this function)
        • Partager sur Facebook
        • Partager sur Twitter
          13 mai 2006 à 18:46:53

          FMOD ne lis QUE les .mid, pas les .wav
          ( enfin, il me semble :-° )
          • Partager sur Facebook
          • Partager sur Twitter
            13 mai 2006 à 18:49:53

            quoi qu'il en soit, ce n'est pas ça qui empeche gcc de compiler :)
            • Partager sur Facebook
            • Partager sur Twitter
              13 mai 2006 à 18:53:23

              Lol, là t'as raison :D

              [EDIT]Chez moi, les préprocesseurs sont :
              #if defined(WIN32) || defined(_WIN64) || defined(__WATCOMC__)
              #include <windows.h>
              #include <conio.h>
              #else
              #include <FMOD/wincompat.h> // FMOD's Version
              #endif
              // Include FMOD
              #include <FMOD/fmod.h>
              #include <FMOD/fmod_errors.h> 

              Et ce code fonctionne :
                    FMUSIC_MODULE *mod = NULL;

                  if (FSOUND_GetVersion() < FMOD_VERSION)
                  {
                      printf("Error : You are using the wrong DLL version!  You should be using FMOD %.02f\n", FMOD_VERSION);
                      exit(1);
                  }
                 
                     //  Initialise

                  if (!FSOUND_Init(32000, 64, 0))
                  {
                      printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
                      exit(1);
                  }


                     // On Charge la musique

                  mod = FMUSIC_LoadSong("Musique.mid");
                  if (!mod)
                  {
                      printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
                      exit(1);
                  }

                  FMUSIC_PlaySong(mod);   



              /* n'essaiez pas de comprendre le sleep ^^ */
               sleep(3500);



                     //  FREE SONG AND SHUT DOWN

                  FMUSIC_FreeSong(mod);
                  FSOUND_Close();
              • Partager sur Facebook
              • Partager sur Twitter
                14 mai 2006 à 11:02:17

                J'ai modifier mon Makefile et mon main, les erreurs ont diminué, mais il ne veut toujours pas compiler...

                main.c :
                #include <stdio.h>
                #include <stdlib.h>

                // Includes SDL
                #include <SDL/SDL.h>
                #include <SDL/SDL_image.h>

                // Include FMOD
                #include <fmod/fmod.h>
                #include <fmod/fmod_errors.h>

                int main(int argc, char *argv[])
                {
                        // Déclaration des variables
                        SDL_Surface *ecran = NULL, *bg = NULL, *curseur = NULL;
                        SDL_Rect position_bg, position_curseur;
                        SDL_Event event;
                        int continuer = 1, niv_curseur = 1;
                       
                        // Initialisation FMOD
                        FSOUND_Init(32000,64,0);
                       
                        FMUSIC_MODULE *son = FMUSIC_LoadSong("curseur.wav");
                               
                        // Initialisation de la SDL
                        SDL_Init(SDL_INIT_VIDEO);
                       
                        ecran = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
                        SDL_WM_SetCaption("Hikari Studio",NULL);
                       
                        SDL_ShowCursor(SDL_DISABLE);

                        position_bg.x = 0;
                        position_bg.y = 0;
                        bg = IMG_Load("background/title.jpg");
                       
                        position_curseur.x = 58;
                        position_curseur.y = 516;
                        curseur = IMG_Load("curseur.bmp");
                        SDL_SetColorKey(curseur,SDL_SRCCOLORKEY,SDL_MapRGB(curseur->format,255,0,0));
                       
                        SDL_EnableKeyRepeat(200,100);
                       
                        while(continuer)
                        {
                               
                                SDL_WaitEvent(&event);
                               
                                switch(event.type)
                                {
                                        case SDL_QUIT:
                                                continuer = 0;
                                                break;
                                        case SDL_KEYDOWN:
                                                switch(event.key.keysym.sym)
                                                {
                                                        case SDLK_ESCAPE:
                                                                continuer = 0;
                                                                break;
                                                        case SDLK_RIGHT:
                                                                FMUSIC_PlaySound(son);
                                                                if(niv_curseur == 1)
                                                                {
                                                                        niv_curseur = 2;
                                                                        position_curseur.x = 338;
                                                                }
                                                                else if(niv_curseur == 2)
                                                                {
                                                                        niv_curseur = 3;
                                                                        position_curseur.x = 542;
                                                                }
                                                                else if(niv_curseur == 3)
                                                                {
                                                                        niv_curseur = 1;
                                                                        position_curseur.x = 58;
                                                                }
                                                                break;
                                                        case SDLK_LEFT:
                                                                FMUSIC_PlaySound(son);
                                                                if(niv_curseur == 1)
                                                                {
                                                                        niv_curseur = 3;
                                                                        position_curseur.x = 542;
                                                                }
                                                                else if(niv_curseur == 2)
                                                                {
                                                                        niv_curseur = 1;
                                                                        position_curseur.x = 58;
                                                                }
                                                                else if(niv_curseur == 3)
                                                                {
                                                                        niv_curseur = 2;
                                                                        position_curseur.x = 338;
                                                                }
                                                                break;
                                                        case SDLK_RETURN:
                                                                if(niv_curseur == 3)
                                                                {
                                                                        continuer = 0;
                                                                        break;
                                                                }
                                                                break;
                                                }
                                                break;
                                }
                               
                                SDL_BlitSurface(bg,NULL,ecran,&position_bg);
                                SDL_BlitSurface(curseur,NULL,ecran,&position_curseur);
                                SDL_Flip(ecran);
                               
                        }
                       
                        SDL_FreeSurface(bg);
                        SDL_FreeSurface(curseur);
                        FMUSIC_FreeSong(son);
                        FSOUND_Close();
                        SDL_Quit();
                       
                }



                et mon MakeFile :
                all:
                        gcc main.c -o main -lSDLmain -lSDL -lSDL_image /usr/lib/libfmod-3.75.so


                et l'erreur :

                lydriel@*****:~/programmes/HikariStudio/title$ make
                gcc main.c -o main -lSDLmain -lSDL -lSDL_image /usr/lib/libfmod-3.75.so
                /tmp/ccMv77y4.o: dans la fonction « main »:
                main.c:(.text+0x297): référence indéfinie vers « FMUSIC_PlaySound »
                main.c:(.text+0x2e7): référence indéfinie vers « FMUSIC_PlaySound »
                collect2: ld a retourné 1 code d'état d'exécution
                make: *** [all] Erreur 1


                voili voilou
                • Partager sur Facebook
                • Partager sur Twitter
                  14 mai 2006 à 11:05:05

                  Citation : Natim

                  gcc -o main main.c -lSDLmain -lSDL -lSDL_image -lFMOD
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 mai 2006 à 11:16:08

                    J'ai modifier le makefile comme le dit Natim, mais il me met qu'il ne peut pas trouver -lFMOD
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 mai 2006 à 11:16:44

                      C'est que tu l'as mal installé, n'as tu pas oublié la DLL et le reste ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 mai 2006 à 11:17:38

                        Pas de DLL sous Linux...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 mai 2006 à 11:18:15

                          Ah oui, alors il y a une version Linux ??? o_O
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 mai 2006 à 11:19:07

                            ce sont les .so, que j'ai placer dans le dossier /usr/lib
                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 mai 2006 à 11:21:29

                              Tu ne dois pas mettre le .so dans le répertoire du programme ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 mai 2006 à 11:24:21

                                non non, les fichiers .so doivent se placer dans le dossier /usr/lib, il n'y a pas de fichier specifique a placer dans le dossier du programme.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 mai 2006 à 13:03:29

                                  Salut.
                                  Je viens d'avoir le meme probleme. (mais sous windows...tapez pas)
                                  Je crois qu'il faut que tu telecharges sur la meme page (ici) mais dans la rubrique "FMOD 3.75 Programmers API".

                                  Et pour info, chez moi (au moins) fmod lit aussi les .wav.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    14 mai 2006 à 18:08:04

                                    Essaie

                                    FSOUND_PlaySound(0,son);

                                    Pour + d'info:
                                    http://tastalian.free.fr/cours.php?part=FMOD
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 mai 2006 à 18:35:20

                                      Pcmaster -> C'est ce que j'ia telecharger...

                                      Davidbrcz -> voici l'erreur que ça me donne

                                      gcc main.c -o main -lSDLmain -lSDL -lSDL_image -lFMOD
                                      main.c: In function ‘main’:
                                      main.c:61: attention : passing argument 2 of ‘FSOUND_PlaySound’ from incompatible pointer type
                                      main.c:79: attention : passing argument 2 of ‘FSOUND_PlaySound’ from incompatible pointer type
                                      /usr/bin/ld: ne peut trouver -lFMOD
                                      collect2: ld a retourné 1 code d'état d'exécution
                                      make: *** [all] Erreur 1
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 mai 2006 à 19:19:14

                                        Suffit de dire que tu es sous Linux, et tout le monde répond n'importe quoi...

                                        Fais-nous un
                                        $ ls -l /usr/lib | grep fmod


                                        Sous Windows, avec MinGW, j'ai une DLL mais aussi une librairie statique, libfmod.a. Sous Linux, dans l'archive officielle, j'ai trouvé ça dans un Makefile d'exemple :
                                        all: Main.cpp
                                        g++ -g -O3 -o simple Main.cpp ../../api/libfmod-3.75.so -pthread
                                        clean:
                                        rm -f simple

                                        Vu que tu as déjà mis un truc de ce genre, je sais pas trop...

                                        all:
                                        gcc main.c -o main -lSDLmain -lSDL -lSDL_image /usr/lib/libfmod-3.75.so

                                        Euh zut essaye ça :
                                        all:
                                        gcc main.o -o main -lSDLmain -lSDL -lSDL_image /usr/lib/libfmod-3.75.so

                                        main.o: main.c
                                        gcc -c main.c -o main.o
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 mai 2006 à 19:35:00

                                          Il refuse toujours de compiler a cause de la fonction

                                          FSOUND_PlaySound(0,son);


                                          EDIT: le ls me donne ça
                                          lydriel@******:~$ ls -l /usr/lib | grep fmod
                                          -rwxr-xr-x 1 root root 445608 2006-05-13 19:14 libfmod-3.75.so
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 mai 2006 à 20:34:30

                                            #include <stdio.h>
                                            #include <stdlib.h>

                                            // Includes SDL
                                            #include <SDL/SDL.h>
                                            #include <SDL/SDL_image.h>

                                            // Include FMOD
                                            #include <fmod/fmod.h>
                                            #include <fmod/fmod_errors.h>

                                            int main(int argc, char *argv[])
                                            {
                                                // Déclaration des variables
                                                SDL_Surface *ecran = NULL, *bg = NULL, *curseur = NULL;
                                                SDL_Rect position_bg, position_curseur;
                                                SDL_Event event;
                                                int continuer = 1, niv_curseur = 1;

                                                // Initialisation FMOD
                                                FSOUND_Init(44100,32,0);

                                                FSOUND_STREAM *son = FSOUND_Stream_Open("curseur.wav",FSOUND_LOOP_NORMAL,0,0);

                                                // Initialisation de la SDL
                                                SDL_Init(SDL_INIT_VIDEO);

                                                ecran = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
                                                SDL_WM_SetCaption("Hikari Studio",NULL);

                                                SDL_ShowCursor(SDL_DISABLE);

                                                position_bg.x = 0;
                                                position_bg.y = 0;
                                                bg = IMG_Load("background/title.jpg");

                                                position_curseur.x = 58;
                                                position_curseur.y = 516;
                                                curseur = IMG_Load("curseur.bmp");
                                                SDL_SetColorKey(curseur,SDL_SRCCOLORKEY,SDL_MapRGB(curseur->format,255,0,0));

                                                SDL_EnableKeyRepeat(200,100);

                                                while(continuer)
                                                {
                                                    SDL_WaitEvent(&event);

                                                    switch(event.type)
                                                    {
                                                        case SDL_QUIT:
                                                            continuer = 0;
                                                            break;
                                                        case SDL_KEYDOWN:
                                                            switch(event.key.keysym.sym)
                                                            {
                                                                case SDLK_ESCAPE:
                                                                    continuer = 0;
                                                                    break;
                                                                case SDLK_RIGHT:
                                                                    FSOUND_Stream_Play(FSOUND_FREE,son);
                                                                    if(niv_curseur == 1)
                                                                    {
                                                                        niv_curseur = 2;
                                                                        position_curseur.x = 338;
                                                                    }
                                                                    else if(niv_curseur == 2)
                                                                    {
                                                                        niv_curseur = 3;
                                                                        position_curseur.x = 542;
                                                                    }
                                                                    else if(niv_curseur == 3)
                                                                    {
                                                                        niv_curseur = 1;
                                                                        position_curseur.x = 58;
                                                                    }
                                                                    break;
                                                                case SDLK_LEFT:
                                                                    FSOUND_Stream_Play(FSOUND_FREE,son);
                                                                    if(niv_curseur == 1)
                                                                    {
                                                                        niv_curseur = 3;
                                                                        position_curseur.x = 542;
                                                                    }
                                                                    else if(niv_curseur == 2)
                                                                    {
                                                                        niv_curseur = 1;
                                                                        position_curseur.x = 58;
                                                                    }
                                                                    else if(niv_curseur == 3)
                                                                    {
                                                                        niv_curseur = 2;
                                                                        position_curseur.x = 338;
                                                                    }
                                                                    break;
                                                                case SDLK_RETURN:
                                                                    if(niv_curseur == 3)
                                                                    {
                                                                        continuer = 0;
                                                                        break;
                                                                    }
                                                                    break;
                                                            }
                                                            break;
                                                    }

                                                    SDL_BlitSurface(bg,NULL,ecran,&position_bg);
                                                    SDL_BlitSurface(curseur,NULL,ecran,&position_curseur);
                                                    SDL_Flip(ecran);
                                                }

                                                FSOUND_Stream_Stop(son);

                                                SDL_FreeSurface(bg);
                                                SDL_FreeSurface(curseur);
                                                FSOUND_Stream_Close(son);
                                                FSOUND_Close();
                                                SDL_Quit();
                                            }
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              14 mai 2006 à 20:44:26

                                              J'ai enfin reussit a faire fonctionne FMOD !! c'etait juste une erreur de casse (pas taper). Merci a tous pour votre aide !
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                14 mai 2006 à 20:45:52

                                                En effet, pas taper, puisque c'était ma faute ;)
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                [FMOD] Impossible de compiler

                                                × 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