Problème de linkage à la compilation [Rayzolu] - C++ - Programmation
Marsh Posté le 27-02-2006 à 15:45:44
Citation : J'ai cru comprendre que cette erreur est dûe à l'inclusion 2 fois du analyse.h mais je vois pas trop comment résoudre le problème. |
Je ne pense pas : visiblement, tes headers sont protégés contre les inclusions multiples. En plus, si tes prototypes de classes apparaissaient plusieurs fois, ton compilateur gueulerait au moment de la compilation et n'atteindrait pas l'étape de link.
Marsh Posté le 27-02-2006 à 15:48:55
J'ai oublié de préciser que le compilo gueule plus particulièrement sur les lignes 15 et 16 de analyse.h ....
Marsh Posté le 27-02-2006 à 15:51:19
voila ce qui arrive quand on mets des definitions dans un en-tete, faut les mettres dans un .cpp
Marsh Posté le 27-02-2006 à 15:53:27
skelter a écrit : voila ce qui arrive quand on mets des definitions dans un en-tete, faut les mettres dans un .cpp |
Effectivement
Merci bien
Marsh Posté le 27-02-2006 à 15:55:36
les définitions de Analyse::size_tab et Analyse::tab_analyse sont compilées une fois dans analyse.obj et une autre fois dans main.obj. Du coup, le linker se retrouve avec deux versions de la même variable.
Il faut que tes définitions n'apparaissent pas dans le header, mais dans l'un (et seulement un) des deux .cpp
Marsh Posté le 27-02-2006 à 15:56:08
vouzico a écrit : Effectivement |
Maykelboulay
Marsh Posté le 27-02-2006 à 15:31:32
Voilà je suis sous Visual C++ et j'ai un problème de compilation : au linkage j'ai droit à ce beau message d'erreur :
main.obj : error LNK2005: "private: static int Analyse::size_tab" (?size_tab@Analyse@@0HA) already defined in analyse.obj
main.obj : error LNK2005: "private: static char (* Analyse::tab_analyse)[30]" (?tab_analyse@Analyse@@0PAY0BO@DA) already defined in analyse.obj
J'ai cru comprendre que cette erreur est dûe à l'inclusion 2 fois du analyse.h mais je vois pas trop comment résoudre le problème.
analyse.h :
correction.h :
main.cpp :
Message édité par vouzico le 27-02-2006 à 15:54:21