我知道你已经看到21728517人要求帮助这个但是在搜索和阅读这个之后我真的无法想出这一个。我知道这个错误,我以前见过它,但是,这一次,我似乎无法绕过它。
我也试过这个checklist。
所以,错误:
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的死亡。我做错了什么?
提前致谢。
答案 0 :(得分:22)
定义misc.cpp
中的函数,而不是misc.h
中的函数。
问题可能是多个CPP文件中的#include
misc.h
造成的。标题保护可防止标题在同一翻译单元中被多次包含,但每个CPP文件(通常)是一个单独的翻译单元。因此,这些函数最终定义两次 - 每次翻译单元一次。