转自:http://blog.csdn.net/whatwhyhow/article/details/3993919
本人在编译工程时,遇到如下错误:
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetDbgFlag 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(mlock.obj) : error LNK2005: __lock 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCTD.lib(crt0dat.obj) : error LNK2005: __cexit 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(strftime.obj) : error LNK2005: _strftime 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(fclose.obj) : error LNK2005: _fclose 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup 已经在 MSVCRTD.lib(crtexe.obj) 中定义1>LIBCMTD.lib(vsprintf.obj) : error LNK2005: _vsprintf 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(tzset.obj) : error LNK2005: __tzset 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
1>LIBCMTD.lib(stricmp.obj) : error LNK2005: __stricmp 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义1>LIBCMTD.lib(vprintf.obj) : error LNK2005: _vprintf 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
=============================================================
原因:
主程序和lib所使用的运行库不一致
解决办法:
vc6----project->setting->c/c++->Code Generation->Use run-time library
vc9----项目->属性->c/c++->代码生成->运行时库