问题说明 #
产品:C++test v9.5.x
开发环境: VC6
在执行单元测试时,链接出错,报告重复定义错误。
错误提示如下:
测试项目链接中...
link.exe /DEBUG "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\MyTcp.cpp69e3cf3d\tested\harness_MyTcp.obj" "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\MyTcpDlg.cpp1ffaee6c\tested\harness_MyTcpDlg.obj" "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\sockNet.cpp56651141\tested\harness_sockNet.obj" "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\StdAfx.cpp11619072\tested\harness_StdAfx.obj" "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\UDPGroup.cpp43d5eda0\tested\harness_UDPGroup.obj" "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\cpptest_testrunner.cppa78b284a\cpptest_testrunner.obj" "C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\file-data\safe_stubs_win32.cee1d0f7b\harness_safe_stubs_win32.obj" /subsystem:windows /machine:I386 "C:\Program Files\Parasoft\C++test\9.5\engine\lib"/cpptestruntime.lib /LIBPATH:"C:\Program Files\Parasoft\C++test\9.5\engine\lib" "C:\Program Files\Parasoft\C++test\9.5\engine\lib"/cpptestsupplement.obj /OUT:"C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\unit-data\current_tubf179707\MyTcpTest.exe" -nologo
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in libcpmtd.lib(delop.obj)
nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in libcpmtd.lib(delop.obj); second definition ignored
Creating library C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\unit-data\current_tubf179707\MyTcpTest.lib and object C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\unit-data\current_tubf179707\MyTcpTest.exp
C:\Documents and Settings\Administrator\parasoft\workspaceVC6\.cpptest\MyTcp\unit-data\current_tubf179707\MyTcpTest.exe : fatal error LNK1169: one or more multiply defined symbols found
进程由于代码: 1169 (错误)退出。
解决方法 #
该错误主要来自于微软的库设置冲突。修改构建设置即可:
打开项目属性,找到构建设置的链接器选项,在其中添加如下选项强制库的链接顺序:
${cpptest:original_options} nafxcwd.lib libcmtd.lib /nodefaultlib:"nafxcwd.lib" /nodefaultlib:"libcmtd.lib"
参考资料 #
1.http://www.cppblog.com/woaidongmao/archive/2010/02/18/108026.aspx