Erreur Linker redéfinition de symbole LNK2005
Bonjour à tous, je suis confronté à un soucis de Linker que j'ai un peu de mal à comprendre. Je m'explique, je suis sous visualstudio2010, mon projet contient un fichier "define.h" que j'inclus dans plusieurs autres headers. Define.h contient (notamment) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#ifndef __DEFINES
#define __DEFINES
[...]
#define _DEBUG
void DEBUG_LOG(char* format, ...)
{
#ifdef _DEBUG && __DEBUG
std::string str(format);
str+="\n";
va_list args;
va_start(args,format);
vprintf(str.c_str(), args);
#endif
}
#endif |
Or, à la compilation, je suis gratifié du message error LNK2005: "void __cdecl DEBUG_LOG(char *,...)" (?DEBUG_LOG@@YAXPADZZ) déjà défini(e) dans Camera.obj. Ce que je ne comprends pas, c'est que le
Code:
1 2
| #ifndef __DEFINES
#define __DEFINES |
devrait normalement éviter ce problème de définition multiple, ce qui ne semble pas être le cas. Auriez vous des idées sur ce qui provoque cela ? N'hésitez pas à me demander plus de précisions si nécessaire.