Подтвердить что ты не робот

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

Я знаю, что вы видели 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)" ([email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) 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)" ([email protected]@[email protected]) 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)" ([email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@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 смерти. Что я делаю неправильно?

Спасибо заранее.

4b9b3361

Ответ 1

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

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