Partage
  • Partager sur Facebook
  • Partager sur Twitter

[FMOD] Load Stream

Sujet résolu
    6 décembre 2006 à 17:23:49

    Bonjour,

    Je suis entrain de tester la libraire FMOD. Mais j'ai une erreur qui me parait bizarre, c'est lors du linkage, j'ai le *.dll dans mon dossier (fmod.dll), le *.a est dans le linker (sous C::B) mais lors du linkage j'ai cette erreur :

    Linking console executable: SDLapp.exe
    .objs\main.o:main.c:(.text+0x3b): undefined reference to `FSOUND_Init@12'
    .objs\main.o:main.c:(.text+0x8d): undefined reference to `FSOUND_Stream_Open@16'
    .objs\main.o:main.c:(.text+0xaa): undefined reference to `FSOUND_Stream_Play@8'
    .objs\main.o:main.c:(.text+0x120): undefined reference to `FSOUND_Stream_Close@4'
    .objs\main.o:main.c:(.text+0x128): undefined reference to `FSOUND_Close@0'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)


    Il commence à me signaler une erreur lorsuqe le FSOUND_Init(); est mit en place, alors que je load une Variable au dessus (FSOUND_STREAM).

    Enfin je ne sais pas trop ce que je dois faire pour que cela marche.

    Merci d'avance

    Ps : Voici mon code bien que je ne pense pas y avoir faire de faute énorme... Mais de toutes facon je n'arrive pas à démarer l'appli.

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <FMOD/fmod.h>

    int main(int argc, char *argv[]) {
        SDL_Surface *ecran = NULL;
        SDL_Event e;
        FSOUND_STREAM *musique = NULL;
        int c = 1, vol = 200;

        SDL_Init(SDL_INIT_VIDEO);
        FSOUND_Init(44100, 32, 0);

        ecran = SDL_SetVideoMode(200, 200, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Musique en Streaming", NULL);

        musique = FSOUND_Stream_Open("mus.mp3", 0, 0, 0);

        if (musique == NULL) {
            fprintf(stderr, "Erreur load musique");
            exit(EXIT_FAILURE);
        }

        FSOUND_Stream_Play(FSOUND_FREE, musique);

        while(c) {
            SDL_WaitEvent(&e);
            switch(e.type) {
                case SDL_QUIT :
                    c = 0;
                    break;
                case SDL_KEYDOWN :
                    switch(e.key.keysym.sym) {
                        case SDLK_UP :
                            if (vol < 240) {
                                vol += 10;
                            }

                            FSOUND_SetVolume(FSOUND_ALL, vol);
                            break;
                        case SDLK_DOWN :
                            if (vol > 10) {
                                vol -= 10;
                            }

                            FSOUND_SetVolume(FSOUND_ALL, vol);
                            break;
                    }
                    break;
            }

            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

            SDL_Flip(ecran);
        }

        FSOUND_Stream_Close(musique);
        FSOUND_Close();
        SDL_Quit();
        return(EXIT_SUCCESS);
    }
    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2006 à 17:28:30

      Citation : dib258

      le *.a est dans le linker


      Il suffit pas mettre les library dans le dossier de C::B, il faut aussi linker...
      ==> Project -> build option -> linker -> add
      • Partager sur Facebook
      • Partager sur Twitter
        6 décembre 2006 à 17:30:21

        C'est bien ce que je disais quand j'ai mit : "Le *.A est dans le linker"

        Je l'ai ajouter dans les build Option mais ca ne marche toujours pas :/
        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2006 à 17:32:13

          Alors aucune idée...

          C'est ce genre de problème récurent qui m'a fait passer sous Linux : la programmation sans prise de tête :D
          • Partager sur Facebook
          • Partager sur Twitter
            6 décembre 2006 à 17:51:50

            Je pensais que l'informatique était une science assez exacte (bien que tous ce que l'homme crée n'est pas une science). Mais bon j'ai redémarer C::B et j'ai réessayé j'ai remis la lib dans le linker et hop tadam ca compile et ca link et ca marche :)

            Mais je ne me décourage pas pour autant, je reste sous Windows :)

            Fuire son problème n'est pas le meilleur moyen de le résoudre :-°

            Et puis j'en ai pas les moyens de passer sous linux
            • Partager sur Facebook
            • Partager sur Twitter
              6 décembre 2006 à 17:58:09

              Citation : dib258

              Fuire son problème n'est pas le meilleur moyen de le résoudre :-°



              Fuir Windows est le meilleur moyen de ne pas avoir de problème :p
              • Partager sur Facebook
              • Partager sur Twitter

              [FMOD] Load Stream

              × 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