LNK2005 (уже определено) - PullRequest
       19

LNK2005 (уже определено)

12 голосов
/ 17 ноября 2011

Я знаю, что вы видели 21728517 человек, обращающихся за помощью с этим, но после поиска и прочтения об этом, я действительно не могу понять это. Я знаю эту ошибку, я видел ее раньше, однако в этот раз я не могу ее обойти.

Я также пробовал этот контрольный список .

Итак, ошибки:

Error   25  error LNK2005: "void __cdecl checkStatus(unsigned int &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool)" (?checkStatus@@YAXAAIV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z) already defined in DollarRecognizer.obj C:\Users\Rui Teixeira\Desktop\Current\Tese\SVN\TIFEE_Empty\TIFEE_Empty\main.obj TIFEE_Empty

Error   26  error LNK2005: "void __cdecl depth2rgb(unsigned short const *,unsigned short *,char *,int,int)" (?depth2rgb@@YAXPBGPAGPADHH@Z) already defined in DollarRecognizer.obj  C:\Users\Rui Teixeira\Desktop\Current\Tese\SVN\TIFEE_Empty\TIFEE_Empty\main.obj TIFEE_Empty

Error   27  error LNK2005: "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl explode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,char)" (?explode@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@D@Z) already defined in DollarRecognizer.obj    C:\Users\Rui Teixeira\Desktop\Current\Tese\SVN\TIFEE_Empty\TIFEE_Empty\main.obj TIFEE_Empty

Итак, дело в том, что это функции, определенные в "misc.h" с соответствующим #ifndef #define #endif. Они не определены в другом месте, но я все еще получаю LNK2005 смерти. Что я делаю не так?

Заранее спасибо.

1 Ответ

23 голосов
/ 17 ноября 2011

Определите функции в misc.cpp, а не в misc.h.

Возможно, проблема связана с #include ing misc.h в нескольких файлах CPP. средства защиты заголовков предотвращают включение заголовка несколько раз в одну и ту же единицу перевода , но каждый файл CPP (как правило) представляет собой отдельную единицу перевода. Таким образом, в конечном итоге эти функции определяются дважды - по одному разу в каждой единице перевода.

...