您的位置:首页 > 编程语言 > C语言/C++

0.c++-显式打印、改变lib库加载顺序(/verbose:lib)

2012-05-10 19:35 267 查看
今天编译了下代码:提示以下错误,因为nafxcw.lib是MFC的,所以必须首先被编译

1>正在链接…

1>nafxcw.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义

测试下,在Link–>cmd中加入/verbose:lib,查看打印的顺序:

>正在搜索库
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\lib\DelayImp.lib:
1>	正在搜索 C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\lib\libcpmt.lib:
1>	正在搜索 .\Lib_MT\log4cplusS.lib:
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\lib\LIBCMT.lib:
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\nafxcw.lib:
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMT.lib(delete.obj) 中定义
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 LIBCMT.lib(new2.obj) 中定义
1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) 已经在 LIBCMT.lib(delete2.obj) 中定义
1>	正在搜索 C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1>	正在搜索 C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:

看来解决的方式就是把nafxcw.lib提前编译,要让它提前编译,好的方式 就是加入依赖lib中,输入–>附加依赖项:nafxcw.lib

再测试下:

1>正在链接...
1>正在搜索库
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\nafxcw.lib:
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\lib\DelayImp.lib:
1>	正在搜索 C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1>	正在搜索 D:\Program Files\Microsoft Visual Studio 9.0\VC\lib\libcpmt.lib:

果然第一个被编译了,搞定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐