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

FMOD Discussion :

Impossible de trouver fmodex à l'édition de lien [FMOD Ex]


Sujet :

FMOD

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Impossible de trouver fmodex à l'édition de lien
    Bonjour,

    Je test actuellement la librairie FMOD dans un projet SDL et je n'arrive pas à compiler.

    J'ai suivi ce tutoriel pour configurer mon projet.

    http://www.bscroggins.co.uk/portfolio/?p=271

    Ainsi mes headers et mes libs sont dans des dossiers à la racine de mon projet.

    Je reçois ce message d'erreur :
    ||=== Build: Debug in FMODTest (compiler: GNU GCC Compiler) ===|
    ld||cannot find -lfmodex|
    ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


    Je tourne sous linux mint 64 bit et j'utilise l'ide Code blocks svn 9287.

    Mon code :

    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
    109
    110
    111
    #ifdef __cplusplus
        #include <cstdlib>
    #else
        #include <stdlib.h>
    #endif
    #include <SDL.h>
     
    #include "inc/fmodlinux.h"
    #include "inc/fmod_errors.h"
     
    int main ( int argc, char** argv )
    {
        // initialize FMOD
        FMOD_SYSTEM *system;
        FMOD_System_Create(&system);
        FMOD_System_Init(system, 2 , FMOD_INIT_NORMAL, NULL);
     
        // initialize SDL video
        if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
        {
            printf( "Unable to init SDL: %s\n", SDL_GetError() );
            return 1;
        }
     
        // make sure SDL cleans up before exit
        atexit(SDL_Quit);
     
        // create a sample sound
        FMOD_SOUND *shoot= NULL;
        FMOD_System_CreateSound(system, "explo3.wav", FMOD_CREATESAMPLE, 0, &shoot);
     
        // create a new window
        SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
                                               SDL_HWSURFACE|SDL_DOUBLEBUF);
        if ( !screen )
        {
            printf("Unable to set 640x480 video: %s\n", SDL_GetError());
            return 1;
        }
     
        // load an image
        SDL_Surface* bmp = SDL_LoadBMP("cb.bmp");
        if (!bmp)
        {
            printf("Unable to load bitmap: %s\n", SDL_GetError());
            return 1;
        }
     
        // centre the bitmap on screen
        SDL_Rect dstrect;
        dstrect.x = (screen->w - bmp->w) / 2;
        dstrect.y = (screen->h - bmp->h) / 2;
     
        // program main loop
        bool done = false;
        while (!done)
        {
            // message processing loop
            SDL_Event event;
            while (SDL_PollEvent(&event))
            {
                // check for messages
                switch (event.type)
                {
                    // exit if the window is closed
                case SDL_QUIT:
                    done = true;
                    break;
     
                    // check for keypresses
                case SDL_KEYDOWN:
                    {
                        // exit if ESCAPE is pressed
                        if (event.key.keysym.sym == SDLK_ESCAPE)
                            done = true;
                        break;
     
                         // exit if Space is pressed
                        if (event.key.keysym.sym == SDLK_SPACE)
                            FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, shoot, 0, NULL);
                        break;
                    }
                } // end switch
            } // end of message processing
     
            // DRAWING STARTS HERE
     
            // clear screen
            SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
     
            // draw bitmap
            SDL_BlitSurface(bmp, 0, screen, &dstrect);
     
            // DRAWING ENDS HERE
     
            // finally, update the screen :)
            SDL_Flip(screen);
        } // end main loop
     
        // free loaded bitmap
        SDL_FreeSurface(bmp);
     
        // free FMOD sound
        FMOD_Sound_Release(shoot);
        FMOD_System_Close(system);
        FMOD_System_Release(system);
     
        // all is well ;)
        printf("Exited cleanly\n");
        return 0;
    }
    Merci d'avance.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    As-tu essayé de rajouter une option -L. au linker ? Comment as-tu ajouté lfmodex au project CodeBlocks ?

    N'hésites pas à faire une capture d'écran et à la mettre en pièce jointe.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    As-tu essayé de rajouter une option -L. au linker ?
    Non, je ne connais pas cette option, je suis novice.

    Comment as-tu ajouté lfmodex au project CodeBlocks ?
    Je l'ai ajouté, via build option de mon projet en "Link librairies" dans l'onglet Linker settings.

    J'ai suivi machinalement cette partie du tutorial :

    Linux Project:
    1) Right click on your project settings and locate the build options.
    2) Go into “Linker settings” and click “add.” Here, type “fmodex”.
    3) Go into “Search directories”, click the “Compiler” tab, and then click “add”. Here, you want to locate your “inc” file within your project files. Click “ok” and keep it as a relative path.
    4) Click the “linker” tab and click “add”. Here you want to locate you “lib” folder. Click “ok” and keep it as a relative path.
    J'ai proceder de la meme maniere que le "2)" pour la SDL.
    Images attachées Images attachées    

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 544
    Points
    218 544
    Billets dans le blog
    118
    Par défaut
    Bonjour,

    Tentez de spécifier le fichier en chemin relatif, par exemple : "./lib/fmodex.lib"
    Après, l'autre question est : que contient le dossier lib. Il vous faut les .a je crois et non des .lib.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 678
    Points
    13 678
    Billets dans le blog
    1
    Par défaut
    -Lxxxx permet d'ajouter le dossier xxxx à la liste des dossiers où le linker va chercher des bibliothèques. Tu as ajouté lib avec l'outil graphique de CodeBlocks, tu aurais pu ajouté -Llib en mode texte aux options du linker. Ce dossier lib contient bien libfmodex.a ?

    Dans tes captures d'écran, on voit que tu sélectionnes la cible release dans le menu de gauche. Or, ton message d'erreur se produit pour la cible debug. As-tu bien ajouté les options aussi pour la cible debug ?

    Si tu cliques sur la cible parente FMODtest tout en haut de ce menu, les options seront ajoutées aux deux cibles filles (debug et release). Préfère toujours cette solution pour que tes cibles debug et release soit cohérente. Tu modifieras une cible particulièrement par exemple pour les options d'optimisation (-Ox) ou pour ajouter les symboles de debug et de profiling (-g, -pg).

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Après, l'autre question est : que contient le dossier lib. Il vous faut les .a je crois et non des .lib.
    Mes bibliothèques ne sont ni des ".a" ni des ".lib" mais des ".so".

    Tentez de spécifier le fichier en chemin relatif, par exemple : "./lib/fmodex.lib"
    Je viens d'essayer et j'ai eu comme résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    -------------- Build: Release in FMODTest (compiler: GNU GCC Compiler)---------------
    g++ -Llib -Llib -o bin/Release/FMODTest obj/Release/main.o  -L/usr/lib/x86_64-linux-gnu -lSDL -s  lib/libfmodex.so -lfmodex -lSDL_image
    lib/libfmodex.so: could not read symbols: File in wrong format
    collect2: error: ld returned 1 exit status
    Process terminated with status 1 (0 minute(s), 0 second(s))
    0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
    -Lxxxx permet d'ajouter le dossier xxxx à la liste des dossiers où le linker va chercher des bibliothèques. Tu as ajouté lib avec l'outil graphique de CodeBlocks, tu aurais pu ajouté -Llib en mode texte aux options du linker. Ce dossier lib contient bien libfmodex.a ?
    Ajouté en mode texte, cela veut dire via la console?

    Mon dossier ne contient que des ".so".

    Dans tes captures d'écran, on voit que tu sélectionnes la cible release dans le menu de gauche. Or, ton message d'erreur se produit pour la cible debug. As-tu bien ajouté les options aussi pour la cible debug ?
    Je l'avais fait pour "release" et "debug".

    Si tu cliques sur la cible parente FMODtest tout en haut de ce menu, les options seront ajoutées aux deux cibles filles (debug et release). Préfère toujours cette solution pour que tes cibles debug et release soit cohérente. Tu modifieras une cible particulièrement par exemple pour les options d'optimisation (-Ox) ou pour ajouter les symboles de debug et de profiling (-g, -pg).
    Merci pour l'info, je le ferai de cette manière dorénavant. Où puis-je rajouter ces différentes options?

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 544
    Points
    218 544
    Billets dans le blog
    118
    Par défaut
    lib/libfmodex.so: could not read symbols: File in wrong format
    Une bibliothèque en 64 bits alors que vous êtes en 32 bits ?
    Faites un
    uname -a
    et donnez nous le résultats
    et un [quote]file ./lib/libfmodex.so
    s'il vous plait.

    Vous êtes sous Linux, j'imagine. Donc oui, ce sont bien les .so qu'il faut utiliser

    Les options sont disponibles à travers les menus des options du projet.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Une bibliothèque en 64 bits alors que vous êtes en 32 bits ?
    Non je suis en 64 bit comme je l'avais précisé au début du post

    Confirmation via la commande uname -a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Linux seb-PC-Fixe-L 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
    et pour le file ./lib/libfmodex.so :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./lib/libfmodex.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x05b6d2f3a66ecf1db375edac4c3bca7a7efb24a0, stripped
    [EDIT]Merci grâce à vos manipulation, j'ai réussi à identifier le problème. Dans l'onglet "Linker settings" j'ai remplacé lifmodex.so par son homologue en 64 bit a savoir libfmodex64.so et depuis la compilation s'effectue.

    Je ne maîtrise pas encore les options liées au linker et au compiler mais je vais m'y intéresser, connaissez vous des articles qui en parlerai?

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 544
    Points
    218 544
    Billets dans le blog
    118
    Par défaut
    La documentation officielle de GCC / G++ donne l'explication des options. Sinon, Code::Blocks les décrit un peu.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/06/2008, 22h43
  2. Impossible de trouver la procédure stockée
    Par yann47 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/02/2005, 22h47
  3. [Plugin][MYECLIPSE]Impossible de trouver une JVM
    Par tolsam dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 08/08/2004, 20h46
  4. Impossible de trouver la procédure stockée
    Par engi dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 12/05/2004, 16h28
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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