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 :

Code Blocks Undefined Reference vers mon premier header


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    CoeurDeLion
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : CoeurDeLion

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut Code Blocks Undefined Reference vers mon premier header
    Bonjour !
    Je viens de commencer mon (Ré)Apprentissage du C. J'en suis arrivé aux Headers que j'ai voulu tester sur ma machine. J'ai donc créé un Projet sous Code Blocks, un main.c et une fonction "hi" définie dans Hi.c Et dont le prototype se trouve dans Hi.H Nom : Capture.png
Affichages : 967
Taille : 5,7 Ko. Le problème étant que le Linkage du programme semble échouer puisque la compilation produit ce message :

    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    -------------- Build: Debug in A (compiler: GNU GCC Compiler)---------------
     
    mingw32-gcc.exe -Wall -g -IC:\Users\33769\Documents\Informatique\C\A -c C:\Users\33769\Documents\Informatique\C\A\Hi.C -o obj\Debug\Hi.o
    mingw32-gcc.exe -Wall -g -IC:\Users\33769\Documents\Informatique\C\A -c C:\Users\33769\Documents\Informatique\C\A\main.c -o obj\Debug\main.o
    mingw32-g++.exe -LC:\Users\33769\Documents\Informatique\C\A\obj\Debug -o bin\Debug\A.exe obj\Debug\Hi.o obj\Debug\main.o   
    obj\Debug\main.o: In function `main':
    C:/Users/33769/Documents/Informatique/C/A/main.c:8: undefined reference to `hi'
    collect2.exe: error: ld returned 1 exit status



    Voici le code de chacun des trois fichiers :

    main.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    #include <stdlib.h>
    #include "Hi.H"
     
    void hi();
    int main()
    {
        hi();
        return 0;
    }
    Hi.C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    #include "Hi.H"
    void hi()
    {
        printf("Hi !");
    }
    Hi.H


    Merci à vous,
    Bonne Journée

  2. #2
    Membre éclairé
    Homme Profil pro
    Autres
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Par défaut
    Bonjour

    Ton Hi.C et Hi.H doivent avoir pour extension .c et .h en minuscule.

    Dans ton .h n'oublis pas les lignes de code pour le preprocesseur. (Evite l'inclusion multiple)

    Hi.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #ifndef __HI_H__ 
    #define __HI_H__
     
    void hi(void); // Ta fonction ne prend aucun argument alors indique void
     
    #endif
    Hi.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdio.h>
     
    #include "Hi.h"
     
    void hi(void)
    {
        printf("Hi !\n"); // Je te conseil de ne pas oublier le saut de ligne en utilisant le \n, du moins tant que tu ne sais pas ce que tu fais
    }
    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>
    #include <stdlib.h> // Tu ne l'utilises pas dans ton code, dans ma modif je l'utilise avec la constante EXIT_SUCCESS sa a maintenant un intérêt de laisser cette ligne 
     
    #include "Hi.h"
     
    // void hi(); J'ai commenté cette ligne car aucun intérêt de mettre le prototype dans le main, tu le fais déjà dans Hi.H
     
    int main(void) // La fonction main ne prenant pas d'argument mieux vaut indiquer void
    {
      hi();
      return EXIT_SUCCESS;
    }
    Je te laisse poursuivre ton apprentissage

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Pour bien comprendre le sens de cette erreur : https://c.developpez.com/faq/?page=G...mbol-not-found

    Comme indiqué par Proteiforme, il est possible que ton fichier Hi.C ne soit pas utilisé à cause de son extension.

Discussions similaires

  1. code:blocks et chemin vers bibliothèque glib
    Par troumad dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 21/12/2017, 19h47
  2. Réponses: 1
    Dernier message: 18/11/2012, 00h47
  3. Réponses: 2
    Dernier message: 02/11/2012, 21h18
  4. code::block et row socket : undefined reference to socket
    Par boboss123 dans le forum Réseau
    Réponses: 2
    Dernier message: 13/07/2012, 14h03
  5. Undefined reference avec code blocks
    Par Airlink dans le forum Débuter
    Réponses: 1
    Dernier message: 14/06/2008, 19h40

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