提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:张莉|2025-11-05 13:29:53.637|阅读 4 次
概述:Parasoft C/C++test是一款专为C/C++代码设计的自动化测试工具,通过静态代码分析、单元测试和运行时错误检测等功能,帮助开发团队在早期发现并修复缺陷,提升代码质量和开发效率 。在实际使用中,尤其是在VC6此类旧版开发环境中执行单元测试时,可能会因环境兼容性问题触发链接错误。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
Parasoft C/C++test是一款专为C/C++代码设计的自动化测试工具,通过静态代码分析、单元测试和运行时错误检测等功能,帮助开发团队在早期发现并修复缺陷,提升代码质量和开发效率 。在实际使用中,尤其是在VC6此类旧版开发环境中执行单元测试时,可能会因环境兼容性问题触发链接错误。
例如LNK2005错误,正是由于C++test生成的测试框架与VC6的库链接顺序冲突所致,具体表现为MFC库与C运行时库对operator delete等符号的重复定义。这一问题的解决需要深入理解工具链的交互机制,并针对性调整构建设置。
问题说明
产品: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 (错误)退出。
该LNK2005错误本质上是Microsoft Foundation Classes (MFC)库与C/C++运行时库(CRT)在链接时发生的符号定义冲突。在VC6环境中,MFC的调试版库nafxcwd.lib和C++标准库的调试多线程静态版libcpmtd.lib都包含了如operator delete、operator new以及DllMain等核心例程的强符号定义。
这一冲突的直接原因是库的链接顺序不当。VC6的链接器按命令行中指定的顺序处理输入库。正确的顺序要求MFC库必须先于C运行时库被处理,因为CRT库有意将这些符号设置为弱外部链接,期望在后续链接MFC库时能被覆盖。当链接顺序颠倒或构建环境(如Parasoft C++test生成的测试框架)错误地同时引入两者时,链接器便会发现同一个函数存在多个强定义,从而触发LNK2005重复定义错误。
解决方法
该错误主要来自于微软的库设置冲突。修改构建设置即可:
打开项目属性,找到构建设置的链接器选项,在其中添加如下选项强制库的链接顺序:
${cpptest:original_options} nafxcwd.lib libcmtd.lib /nodefaultlib:"nafxcwd.lib" /nodefaultlib:"libcmtd.lib"
通过调整链接顺序强制 MFC 库优先于 CRT 库加载,可有效解决 LNK2005 错误,确保 C++test 在 VC6 环境中的单元测试顺利执行。作为一款支持编码规范验证、静态分析、单元测试及覆盖率分析的集成解决方案,Parasoft C/C++test不仅能够自动化执行此类复杂场景的测试任务,还通过早期缺陷检测和持续质量监控,帮助团队降低返工成本,提升代码可靠性 。正确配置并利用其能力,可显著优化嵌入式、跨平台等关键领域开发的测试流程,最终实现高质量代码的持续交付。
关于慧都
慧都科技(EVGET)成⽴于2003年,是⼀家⾏业数字化解决⽅案公司,⻓期专注于软件、油⽓与制造⾏业。公司基于深⼊的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与⻓期竞争优势。
慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn




本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
Aspose.Slides for Java使用户能够轻松地操作幻灯片、添加注释和转换文件。其易用性和集成能力提高了工作效率,使开发人员能够专注于更关键的任务。
在嵌入式软件测试领域,对交叉编译代码进行单元测试是一大挑战。Parasoft C/C++test作为专业的C/C++测试工具,能够与劳特巴赫Trace32调试器深度集成。下面会详细介绍如何在C++test中配置Trace32调试器,实现对PowerPC架构程序的单元测试,涵盖环境设置、项目导入到测试执行的全过程。
本文将为大家介绍如何使用DevExpress WinForms数据网格控件实现摘要文本的格式化,欢迎下载最新版组件体验!
相关产品
针对 C/C++ 软件开发提供统一、完全集成的测试解决方案。
Parasoft Jtest用于应用软件开发的集成Java测试工具
Parasoft dotTEST降低C#和VB.NET开发风险,有效地实现符合C#和.NET开发的测试工具的要求
最新文章 MORE
永利最大(官方)网站相关的文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站