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 :

Erreur incompréhensible d'edition de liens


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut Erreur incompréhensible d'edition de liens
    Bonjour,

    Que j'utilise devc++ ou CodeBlock le résultat est tj le même.

    J'ai 2 source C avec dans l'une des fonctions avec leurs codes associée
    et dans l'autre je fait appel à ces fonctions. Ex:
    Dans code1.c j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void exit_toto(int i)
    {
       return i;
    }
    et dans code2.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void exit_toto(inti i);
     
    main(..)
    {
       exit_toto(0);
    }
    Tout compile mais au linkage j'ai systématiquement:
    Indifined reference tio _exit_toto

    j'ai evidement crée sous dev-cpp ou codeblock au préalable un projet dans lequel j'ai inclu code1.c et code2.c

    Ou je me trompe donc
    Merci d'avance de votre aide

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Tu es certain que ça compile. Quelques remarques:
    • main() retourne un entier de type int, toujours! Cette valeur, si on veut être portable doit être 0, EXIT_SUCCESS ou EXIT_FAILURE.
    • Ta fonction exit_toto retourne un entier de type int. Pourquoi la déclares-tu avec le prototype suivant: void exit_toto(int i); ?


    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Par défaut
    As-tu fais les bons #include au début de tes fichiers ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    code2.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    extern void exit_toto(inti i);
     
    int main(..)
    {
       exit_toto(0);
    
      return 0 ;
    }

  5. #5
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    code2.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    extern void exit_toto(inti i);
     
    int main(..)
    {
       exit_toto(0);
    
      return 0 ;
    }

    Il y a une erreur dans le prototype également ce n'est pas inti i mais int i

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    extern void exit_toto(int i);
    int main(void)
    {
       exit_toto(0);
       return 0 ;
    }
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    code2.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    extern void exit_toto(inti i);
    ...
    Par défaut, les fonctions sont en liaison extern. Si on ne veut pas qu'eles soient connues dans une autre unité de compilation, on doit les déclarer static

  7. #7
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Merci de ta reponse mais j'avais aussi essayé ca. En fait j'ai trouvé et c'est trés bizarre. J'avais un 'C' au lieu d'un 'c' dans l'extension de mes fichiers. Ca compile mais etrangement au link ca ne voit plus rien !

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

Discussions similaires

  1. Erreur Edition de lien après changement de version
    Par Alfred83 dans le forum wxWidgets
    Réponses: 2
    Dernier message: 09/01/2007, 15h17
  2. Réponses: 5
    Dernier message: 03/12/2006, 16h15
  3. Réponses: 3
    Dernier message: 21/07/2006, 15h50
  4. Erreur à l'édition de lien lors d'un 'mkoctfile'
    Par Anouschka dans le forum Linux
    Réponses: 1
    Dernier message: 09/05/2006, 11h04
  5. Réponses: 11
    Dernier message: 20/01/2006, 12h35

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