<script language="javascript" src="http://www.hackhome.com/plus/ad_js.php?aid=12" type="text/javascript"></script><script type="text/javascript"> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-6376451724654507&dt=1177491990125&lmt=1175248842&prev_fmts=300x250_as&format=250x250_as&output=html&url=http%3A%2F%2Fwww.hackhome.com%2F2006%2F4-10%2F17210827426.shtml&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=008000&color_border=FFFFFF&ad_type=text_image&ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fcomplete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26rls%3Dcom.microsoft%253Azh-cn%253AIE-SearchBox%26rlz%3D1I7XNLA%26q%3D%2522%25E7%2594%25B1%25E4%25BA%258E%25E5%25BA%2594%25E7%2594%25A8%25E7%25A8%258B%25E5%25BA%258F%25E9%2585%258D%25E7%25BD%25AE%25E4%25B8%258D%25E6%25AD%25A3%25E7%25A1%25AE%2522%26meta%3D&cc=406&u_h=800&u_w=1280&u_ah=772&u_aw=1280&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="250" scrolling="no" height="250" allowtransparency="allowtransparency"> |
作者:代码罐头
CODE:
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
[Copy to clipboard]
产生这个问题的原因是库依赖关系 在Project->Property->configuration Properties->Linker->Command Line 加入编译开关/verbose:lib可以显示详细的库链接顺序
CODE:
------ Build started: Project: PerfMonDemo, Configuration: Release Win32 ------ Linking... Searching libraries Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/pdh.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/DelayImp.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcpmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/nafxcw.lib: nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj) Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/kernel32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/user32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/gdi32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/msimg32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/comdlg32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/winspool.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/advapi32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/shell32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/comctl32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/shlwapi.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/uuid.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oledlg.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/ole32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oleaut32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/urlmon.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/OLDNAMES.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/atls.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/ws2_32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/mswsock.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oleacc.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/pdh.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/DelayImp.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcpmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/nafxcw.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/kernel32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/user32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/gdi32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/msimg32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/comdlg32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/winspool.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/advapi32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/shell32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/comctl32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/shlwapi.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/uuid.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oledlg.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/ole32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oleaut32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/urlmon.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/OLDNAMES.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/atls.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/ws2_32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/mswsock.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oleacc.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/pdh.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/DelayImp.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcpmt.lib: Finished searching libraries Searching libraries Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/pdh.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/DelayImp.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcpmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/nafxcw.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/kernel32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/user32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/gdi32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/msimg32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/comdlg32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/winspool.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/advapi32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/shell32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/comctl32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/shlwapi.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/uuid.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oledlg.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/ole32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oleaut32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/urlmon.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/OLDNAMES.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/atls.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/ws2_32.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/mswsock.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/oleacc.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib/pdh.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/DelayImp.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/lib/libcpmt.lib: Searching d:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/lib/nafxcw.lib: Finished searching libraries ./Release/PerfMonDemo.exe : fatal error LNK1169: one or more multiply defined symbols found Build log was saved at "file://d:/Dev/Performance Monitor/Release/BuildLog.htm" PerfMonDemo - 2 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
[Copy to clipboard]
我们发现在libcpmt.lib声明过的operator new在nafxcw.lib中再次定义 解决方法如下 Project->Property->configuration Properties->Linker->Input->Additional Dependencies 加入 nafxcw.lib libcpmt.lib Project->Property->configuration Properties->Linker->Input->Ignore Specific Library 加入 nafxcw.lib libcpmt.lib 这样链接程序就不会先按照默认顺序来连接这两个库文件 而是在最后在加入对他们的引用.这样就避免了这个问题 下面是一张可能发生冲突的列表 若要使用此运行时库 请忽略这些库 单线程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib 多线程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib 使用 DLL 的多线程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib 调试单线程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib 调试多线程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib 使用 DLL 的调试多线程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.li |