c++调试记录:error LINK2005: XXXX已经在 .obj 中定义"
2017-08-01 14:20
302 查看
当项目代码比较多,文件也比较多的时候,这个问题真的非常棘手,可能会耗费大量的时间来排查错误。
问题出现的原因:在.h文件中定义了变量。然后A.cpp包含了该.h,B.cpp包含了该.h,于是在链接的时候,生成A.obj,B.obj,但是 .h中定义的变量会在这两个obj中又被定义,所以,导致了这个LINK2005错误。
解决方法:不要在.h中定义变量!!在.h中只声明函数,类。把具体的实现都必须要放到.cpp中!!!!
问题出现的原因:在.h文件中定义了变量。然后A.cpp包含了该.h,B.cpp包含了该.h,于是在链接的时候,生成A.obj,B.obj,但是 .h中定义的变量会在这两个obj中又被定义,所以,导致了这个LINK2005错误。
解决方法:不要在.h中定义变量!!在.h中只声明函数,类。把具体的实现都必须要放到.cpp中!!!!
相关文章推荐
- 调试错误的解决:error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义
- 关于VS2008编译错误"error LNK2005: 已经在 .obj 中定义"
- C++ error:LNK2005 已经在*.obj中定义
- C++中的“error:LNK2005 已经在*.obj中定义”异常
- C++报错:error LNK2005: _main 已经在 1.obj 中定义
- (转+原)VC编译错误:uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义
- 关于VS2008编译错误"error LNK2005: 已经在 .obj 中定义" 【转】http://akheyun.blog.163.com/blog/static/138249276201062221452697/
- C++中的“error:LNK2005 已经在*.obj中定义”异常问题
- 关于VS "error LNK2005: 已经在 .obj 中定义"
- 关于VS2008编译错误"error LNK2005: 已经在 .obj 中定义"
- 1>XxxDlg.obj : error LNK2005: "char * * tabPageData" (?tabPageData@@3PAPADA) 已经在 XxxDlg.obj 中定义
- C++中的“error:LNK2005 已经在*.obj中定义”异常问题
- 关于VS2008编译错误"error LNK2005: 已经在 .obj 中定义"(转)
- error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
- 【链接库出错】:error LNK2005: "void __cdecl operator ***(void *)" (??3@YAXPAX@Z) 已经在xxxx.lib中定义
- error LNK2005: _DllMain@12 已经在 XXXX.obj 中定义
- VS2005链接问题: LNK2005错误 :error LNK2005: _free 已经在 libcmtd.lib(dbgheap.obj) 中定义
- uafxcwd.lib(dllmodul.obj) : error LNK2005: DllMain 已经在 中定义
- 1>libcmt.lib(invarg.obj) : error LNK2005: __initp_misc_invarg 已经在 libcmtd.lib(invarg.obj) 中定义 1>li
- libcmt.lib(invarg.obj) : error LNK2005: __initp_misc_invarg 已经在 libcmtd.lib(invarg.obj) 中定义