没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:张莉|2025-09-28 11:39:22.433|阅读 72 次
概述:在Parasoft C/C++test中出现main函数重复定义的情况,通常是由于以下两个原因之一造成的:一是main函数所在的文件被进行了插桩操作;二是测试配置中未勾选“重命名main()函数”选项。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
在Parasoft C/C++test中出现main函数重复定义的情况,通常是由于以下两个原因之一造成的:一是main函数所在的文件被进行了插桩操作;二是测试配置中未勾选“重命名main()函数”选项。
正常来说,C/C++test在cpptest_testrunner.h中定义main函数,然后会将main函数重命名,如果项目中有多个main函数,那么报错的应该是类似NewMain重复定义这样的报错。报告上面这样的main重复定义的话,说明原项目中的main函数并没有正常被重命名。
出现main函数重复定义错误时,首先应检查main函数所在的源文件是否被设置为去插桩。Parasoft C/C++test在执行测试时,会通过向源代码插桩来收集覆盖率数据。若对包含main的文件正常插桩,工具会自动将其重命名,从而避免与测试框架自身的入口函数冲突;但若该文件被排除在插桩范围之外,main函数保持原样,就会引发重复定义错误。
选择运行的测试配置,找到插桩模式的编辑
查看插桩模式中的“重命名main()函数”,按照下图勾选上。
针对Parasoft C/C++test中出现的main函数重复定义问题,除了调整插桩设置和启用“重命名main()函数”功能外,您还可以选择直接使用项目中的main函数作为测试入口。这种方法的核心是切换测试配置的执行模式。
在构建设置中添加预处理器宏定义-DCPPTEST_ENTRY_POINT_DEFINED,其核心作用是向C/C++test工具链发出一个明确的信号,告知其测试执行的入口点已由用户代码自行提供。在默认的“单元测试”模式下,C/C++test为了能够组织并运行测试用例,会自动生成一个它自己的 main 函数作为程序的起点。当项目中也存在一个main函数时,在链接阶段就会因为符号重复定义而导致错误。通过定义此宏,实质上是在指示C/C++test跳过其标准main函数的生成步骤,从而从根源上避免链接冲突。
上面步骤保证最终可执行程序运行从项目的main函数进入,但这样是不会运行到测试用例代码的,所以还需要对main函数进行修改。需要修改两个地方:
在文件前面添加头文件:
#ifdef PARASOFT_CPPTEST
#include “cpptest.h
#endif
在main函数合适的位置添加如下代码:
#ifdef PARASOFT_CPPTEST
CppTest_Main(0,0);
#endif
关于慧都
慧都是一家行业数字化解决方案公司,专注于软件、石油与工业领域,以深入的业务理解和行业经验,帮助企业实现智能化转型与持续竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
大型SaaS系统的自动化测试常常受制于界面变化快、结构复杂、加载机制多变等因素。从元素识别到脚本管理,SmartBear TestComplete帮助Salesforce建了可靠的自动化测试体系。
BarTender 标签管理系统,正是帮助企业轻松实现 GS1 标准化标签设计、编码生成与信息联动的强大工具。
Parasoft C/C++test 是一款功能强大的 C/C++ 软件测试工具,集成了静态代码分析、单元测试、集成测试和覆盖率分析等功能,单元测试作为其关键功能之一,为了适配多样化的目标部署环境,C/C++test 设计了灵活的测试结果收集机制。通过Socket通讯方式来收集单元测试结果,从而扩展其测试覆盖范围与应用场景。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢