Bonjour à tous,
Je suis débutant, et je m'appuie sur "C++ pour les nuls" pour appréhender ce langage. Je suis sous linux (Fedora) 2.6.16-1.2069_FC4.
Je ne parviens pas à utiliser convenablement la directive #include.
J'ai consulté la FAQ (http://c.developpez.com/faq/cpp/?pag...SS_header_cpp), mais cela ne répond pas à mon problème.![]()
J'ai créé un fichier .h :
J'ai créé un fichier .cpp contenant les fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // gestab.h // Prototype pour les fonctions contenues dans gestab.cpp #include <iostream.h> #include <stdlib.h> int nbLignesTableau(int &); void rempliTableau(float [], const int &); void afficheTableau(const float [], const int &);
et enfin le fichier .cpp qui contient le main() et l'include :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // gestab.cpp // Librairie des fonctions définies par gestab.h #include <iostream.h> #include <stdlib.h> #include "lib/gestab.h" (j'ai aussi essayé sans cette ligne) int nbLignesTableau(int &nbVal) {...} void rempliTableau(float a[], int &nbval) {...} void afficheTableau(float a[], int &nbval) {...}
Mais lorsque je compile (g++ -o $FIC -Wno-deprecated $FIC.cpp), je récupère l'erreur suivante :
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
16
17 // ex51 // test #include <iostream.h> #include <stdlib.h> #include "lib/gestab.h" int main(int intArgc, char* pszArgs[]) { int nbValeurs; nbValeurs = nbLignesTableau(nbValeurs); float a[nbValeurs]; rempliTableau(a, nbValeurs); afficheTableau(a, nbValeurs); return 0; }
Je crois comprendre que le fichier .h est bien lu, mais pas le fichier contenant les fonctions externalisées. Comment corriger cet erreur ? (à moins qu'il ne s'agisse d'une autre erreur...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /tmp/ccGaXX59.o(.text+0x29): In function `main': ex51.cpp: undefined reference to `nbLignesTableau(int&)' /tmp/ccGaXX59.o(.text+0x6f):ex51.cpp: undefined reference to `rempliTableau(float*, int const&)' /tmp/ccGaXX59.o(.text+0x82):ex51.cpp: undefined reference to `afficheTableau(float const*, int const&)' collect2: ld a retourné 1 code d'état d'exécution
Merci d'avance pour vos conseils et vos idées.
Partager