[ Prog C ] Probleme avec les includes multiples...

Probleme avec les includes multiples... [ Prog C ] - C++ - Programmation

Marsh Posté le 31-10-2002 à 22:40:41    

Salut tout le monde...
 
Bon ben voila, mon pb est simple, j'ai des fichiers : mat_adj.h et .c ; graphe.h et .c.
Le fichier mat_adj.h fait appel au fichier graphe.h (#include"graphe.h" )
Jusque la, tout va bien, ca compile, on est content.
 
Le probleme vient quand je compile mon troisieme fichier (qui est en fait le programme principal).
Je fais un include de mat_adj.h. la quand je compile, il me sort une erreur du type : undefined reference to ... sur toutes les fonctions de graphe.h mais pas sur les typedef et ce non pas a la compilation mais au linkage.
 
C'est alors que j ai essaye de faire un include de mon fichier graphe.h mais la il me sort une erreur de compil disant que je tente de redefinir des typedef...moralite je vois pas la solution.
 
J ai essaye les commandes du preproc mais rien n y fait.
 
Merci de votre aide, j ai franchement plus d idee ;)
 
Phagor.

Reply

Marsh Posté le 31-10-2002 à 22:40:41   

Reply

Marsh Posté le 31-10-2002 à 23:09:25    

le probleme de link ne vient pas d'header manquant, mais de fichier objet (.o) manquant. Tu compiles tes fichiers a part et tu linke apès, ou tu fais tout en même temps ?

Reply

Marsh Posté le 31-10-2002 à 23:12:33    

D abord merci pour ta rapidite...
 
J ai compiler (.o) mes deux fichiers a inclure et ensuite j ai essayé de compiler le fichier du main mais je me prends la meme erreur et quand je fais tout d un coup (je compile et linke mon main et il s occupe du reste) j ai encore la meme erreur.
 
Ce qui m etonne le plus est qu il sort une erreur sur les fonctions et non sur les typedef de graphe.h...
 
Voila.

Reply

Marsh Posté le 31-10-2002 à 23:17:15    

phagor a écrit a écrit :

 
J ai compiler (.o) mes deux fichiers a inclure et ensuite j ai essayé de compiler le fichier du main mais je me prends la meme erreur et quand je fais tout d un coup (je compile et linke mon main et il s occupe du reste) j ai encore la meme erreur.



 
Visiblement tu oublies un truc. Le linker ne devine pas quels sont les fichiers a lier, c'est a toi de lui dire.
 
ex1:

Code :
  1. gcc -c toto.c
  2. gcc -c tata.c
  3. gcc -c main.c
  4. gcc -o pika toto.o tata.o main.o


 
ex2:

Code :
  1. gcc -o pika toto.c tata.c main.C


 

phagor a écrit a écrit :

 
Ce qui m etonne le plus est qu il sort une erreur sur les fonctions et non sur les typedef de graphe.h...




normal, vu que les typedef sont inclus via le .h, donc le fichier objet le connais. Ce qui lui manque c'est l'implémentation des fonctions déclarées.

Reply

Marsh Posté le 31-10-2002 à 23:20:19    

Bon ben je viens de tester ca marche nickel...
 
Je savais pas.
Merci beaucoup de ton aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed