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

C Discussion :

struct de pointeur de fonction et pb d'initialisation


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Points : 98
    Points
    98
    Par défaut struct de pointeur de fonction et pb d'initialisation
    Bonjour,

    je suis en train de recompiler le source de la librairie OGG pour l'intégrer dans un module flash, mais j'ai une erreur au link.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: undefined reference to '_floor0_exportbundle'
    sachant que la la variable est définie dans un fichier C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const vorbis_func_floor floor0_exportbundle={
      NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
      &floor0_free_look,&floor0_inverse1,&floor0_inverse2
    };
    Et c'est utilisé dans un autre fichier C de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern const vorbis_func_floor     floor0_exportbundle;
    comment supprimer cette erreur de link ?
    Merci

  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
    Il faut ajouter la bibliothèque aux options de ton linker. Regarde ma signature ainsi que cet article : http://gradot.wordpress.com/2013/11/...statique-en-c/

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Points : 98
    Points
    98
    Par défaut
    En fait, je n'utilise pas de lib mais j'ai inclus le code dans mon programme.
    la suppression du mot clé extern a permit de résoudre le souci.

    Par contre, j'ai un souci de variable non initialisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: uninitialized const ‘floor0_exportbundle’
    definition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const vorbis_func_floor floor0_exportbundle={
      NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
      &floor0_free_look,&floor0_inverse1,&floor0_inverse2
    };
    utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const vorbis_func_floor     floor0_exportbundle;
    const vorbis_func_floor     *const _floor_P[]={
      &floor0_exportbundle,
      &floor1_exportbundle,
    };

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Points : 98
    Points
    98
    Par défaut struct de pointeur de fonction et pb d'initialisation
    Bonjour,

    je suis en train de modifier du code de la librairie OGG et je suis tombé sur une erreur étrange :

    dans un fichier C (floor0.c), voila ce qui est déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const vorbis_func_floor floor0_exportbundle={
      NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
      &floor0_free_look,&floor0_inverse1,&floor0_inverse2
    };
    floor0_unpack, look, ... sont des fonctions définies plus haut dans le fichier C
    Il existe la meme chose pour floor1_exportbundle et d'autres.

    Dans un autre fichier, (registry.c), on va utiliser ce qui a été déclaré comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    extern const vorbis_func_floor     floor0_exportbundle;
    const vorbis_func_floor     *const _floor_P[]={
      &floor0_exportbundle,
      &floor1_exportbundle,
    };
    Si je compile, j'ai cette erreur :
    undefined reference to '_floor0_exportbundle'

    Si j'enleve juste le extern, j'obtient cette erreur :
    uninitialized const ‘floor0_exportbundle’

    Si je supprime la ligne commençant par le extern, j'ai cette erreur :
    ‘floor0_exportbundle’ was not declared in this scope


    Comment faire pour compiler ce code ?
    Merci

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Compiles-tu avec les règles normales de compilation séparée? (compilation sans linkage pour chaque .c, puis linkage des .o dans le bon ordre)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Points : 98
    Points
    98
    Par défaut
    je compile sans passer par les .o, en utilisant g++ dans un makefile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "$(FLASCC)/usr/bin/g++" $(BASE_CFLAGS) -O3 -I./include bitwise.c framing.c analysis.c bitrate.c block.c codebook.c envelope.c floor0.c floor1.c info.c lookup.c lpc.c lsp.c mapping0.c mdct.c psy.c registry.c res0.c sharedbook.c smallft.c synthesis.c vorbisenc.c vorbisfile.c window.c ogglib.cpp as3api.cpp main.cpp -emit-swc=SL.OggLib -o OggLib.swc
    par contre, c'est pour faire un swc, une lib flash, en utilisant flascc (ex alchemy), mais je ne pense pas que le problème vienne de là

Discussions similaires

  1. opengl et pointeur de fonction
    Par Oldhar dans le forum C
    Réponses: 5
    Dernier message: 07/11/2003, 00h56
  2. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 20h37
  3. Matrice de pointeurs de fonctions
    Par sebduth dans le forum C
    Réponses: 15
    Dernier message: 18/07/2003, 15h03
  4. [Kylix] Pointeur de fonctions
    Par _dack_ dans le forum EDI
    Réponses: 1
    Dernier message: 03/07/2003, 11h17
  5. pointeur de fonction
    Par kardath dans le forum C
    Réponses: 4
    Dernier message: 28/12/2002, 15h39

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