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 de compilation "undefined reference"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut Erreur de compilation "undefined reference"
    Bonsoir à tous

    Je suis un débutant en programation, et j'ai un problème d'executer mon petit programme qui affiche "Hello Word" à l'ecran, mais en utilisant une classe sous C++; Cette classe est découpée en trois fichiers séparés telques hello.h, hello.cc et test_hello.cc qui contient la foction main(); donc quand j'essaie de compiler le test_hello.cc le compilateur me renvoyer le message suivant:

    /tmp/ccFFwWMm.o: In function `main':
    test_Hello.cc:/(.text+0x76): undefined reference to `Hello::Hello()'
    test_Hello.cc:/(.text+0xad): undefined reference to `Hello::Hello(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
    test_Hello.cc:/(.text+0xef): undefined reference to `Hello::affiche()'
    test_Hello.cc:/(.text+0x13a): undefined reference to `Hello::affiche()'
    collect2: ld returned 1 exit status
    pour mieux comprendre voici mes codes:

    Code hello.h : 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
    #ifndef Hello_H
    #include<string>
    #define Hello_H
     
    using namespace std;
     
    class Hello
    {
    public:
    Hello();
    Hello(string s);
    void affiche();
    private:
    string msg;
    };
    #endif

    Code hello.cc : 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
     
    #include <string>
    using namespace std;
    #include "hello.h"
     
    Hello::Hello()
    {
    msg = "Hello Word"; //affectation une valeur à mon string msg 
    }
    Hello::Hello(string s)
    {
    msg = s;
    }
     
    void Hello::affiche()
    {
    	cout<< msg <<endl;
    }


    Code test_hello.cc : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include<iostream>
    #include <string>
    #include "hello.h"
    using namespace std;
     
    int main()
    {
    Hello h1;
    Hello h2("Bonjour");
     
    h1.affiche();
    h2.affiche();
    return 0;
    }

    si quelqu'un peut m'aider ?? je suis à l'écoute

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour et bienvenu,
    A priori ton code est correct.
    Les erreurs que tu présentes sont des erreurs d'édition de lien. C'est l'opération qui suit la compilation des différents fichiers pour produire l'exécutable. C'est pourquoi, je pense que ton projet doit être incomplet : hello.cc ne doit pas être inclus.
    Quel est ton environnement de développement : compilateur + EDI (Visual, Code::Bock....)?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    Bonjour à tous,

    merci à 3DArchi, pour repondre à votre question je travail sous Linux et j'utilise l'editeur du texte Kate qui fournit l'accès direct au terminal pour la compilation, je vous attend !!

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Comment invoques-tu le compilateur ? L'éditeur de lien ?
    Comment est géré ton makefile?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    merci pour la reponse encore,
    pour compiler je tappe tous simplement le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ test_hello.cc -o test_hello
    et pour le makefile, j'ai pas encore le faire, mais c'est une occasion pour que vous m'aider de l'implemente.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Le problème était donc bien celui-là
    Voici un petit tutoriel pour le makefile. Il est présenté pour du C, mais le principe est le même pour C++, si ce n'est que tu utilises g++ comme compilateur. Et puis tu dois aussi connaître make.
    Autre tuto intéressant pour toi.
    Voilà !
    Bon courage, et bon Noël.

Discussions similaires

  1. Compilation et "undefined reference"
    Par bzerath dans le forum Débuter
    Réponses: 11
    Dernier message: 28/10/2011, 09h33
  2. Réponses: 8
    Dernier message: 22/07/2008, 14h30
  3. Erreur compilation "undefined reference to "
    Par ViRouF dans le forum C++
    Réponses: 5
    Dernier message: 02/03/2007, 14h55
  4. [debutant] compilation g++ : undefined reference
    Par xavlours dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2005, 15h49

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