Je reçois des erreurs d'éditeur de liens qui suggèrent que je n'utilise pas #ifndef et #define.Erreurs de lieur même si je les empêche aveC#ifndef
1> TGALoader.obj: erreur LNK2005: "struct TGA TGA" déjà défini dans main.obj 1> TGALoader.obj (tga 3UTGA @@ @@ A?): Erreur LNK2005: " struct tGAHeader tgaheader » déjà défini dans main.obj 1> TGALoader.obj (tgaheader @@ 3UTGAHeader @@ A?): erreur LNK2005: "unsigned char * uTGAcompare"(? uTGAcompare @@ 3PAEA) déjà défini dans main.obj 1> TGALoader.obj: erreur LNK2005: "unsigned char * cTGAcompare" (? cTGAcompare @@ 3PAEA) déjà défini dans main.obj 1> LINK: avertissement LNK4098: defaultlib 'LIBCMTD' en conflit avec utilisation d'autres bibliothèques; utiliser /NODEFAULTLIB: bibliothèque
J'ai inclus un fichier d'en-tête Texture.h et tga.h des tutoriels Nehe opengl dans mon projet . J'ai
#ifndef TGAISCOOL
#define TGAISCOOL
#endif
dans mon fichier tga.h. Si je l'inclut plus d'une fois, j'obtiens les erreurs de l'éditeur de liens que j'ai collé ci-dessus. Les deux premiers proviennent de texture.h bien que la situation soit la même.
Des idées sur ce qui ne va pas?
Afficher plus de code. – SoapBox
Les erreurs du lieur n'ont rien à voir avec '# ifndef'. Les gardes d'en-tête empêchent seulement les conflits de redéfinition au moment de la compilation, c'est-à-dire par unité de traduction. Ce problème est entièrement différent! –