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 :
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 &);
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
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) {...}
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
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;
}
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
/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
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...)

Merci d'avance pour vos conseils et vos idées.