Bonsoir,
voici un programme tout simple en 3 fichiers, contenant une classe, pour les débutants qui peuvent avoir un souci avec l'édition de liens au moment de la compilation :
Code Personne.h : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Personne { private: int annee; public: Personne(int a); void afficher(); };
Code Personne.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "Personne.h" #include <iostream> using namespace std; Personne::Personne(int a) { annee = a; } void Personne::afficher() { cout << "Annee : " << annee << endl; }
Code TestPersonne.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include "Personne.h" int main(){ Personne p(15); p.afficher(); return 0; }
Deux manières de compiler (sans et avec Makefile) :
sans Makefile :
avec Makefile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5$ g++ -c TestPersonne.cpp Personne.cpp $ g++ -o TestPersonne TestPersonne.o Personne.o $ ./TestPersonne Annee : 15
ensuite :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 all: TestPersonne TestPersonne: Personne.o TestPersonne.o g++ -o TestPersonne Personne.o TestPersonne.o Personne.o: Personne.cpp Personne.h g++ -c Personne.cpp TestPersonne.o: TestPersonne.cpp Personne.h g++ -c TestPersonne.cpp
Si vous obtenez des erreurs du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4$ make $ ./TestPersonne Annee : 15
ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TestPersonne.o: In function `main': TestPersonne.cpp:(.text+0x19): undefined reference to `Personne::Personne(int)' TestPersonne.cpp:(.text+0x25): undefined reference to `Personne::afficher()' collect2: ld returned 1 exit status
c'est que l'édition de liens n'a pas été correcte, c'est ce qui m'est arrivé et je voulais en faire profiter ceux qui ont ramé dessus
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 cc Personne.o -o Personne /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start': (.text+0x18): undefined reference to `main' Personne.o: In function `Personne::afficher()': Personne.cpp:(.text+0x33): undefined reference to `std::cout' Personne.cpp:(.text+0x38): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' Personne.cpp:(.text+0x44): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)' Personne.cpp:(.text+0x4c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' Personne.cpp:(.text+0x54): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))' Personne.o: In function `__static_initialization_and_destruction_0(int, int)': Personne.cpp:(.text+0x7b): undefined reference to `std::ios_base::Init::Init()' Personne.cpp:(.text+0x80): undefined reference to `std::ios_base::Init::~Init()' Personne.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status make: *** [Personne] Erreur 1![]()
Partager