半岛外围网上直营

Parasoft C/C++test 测试中 main 函数重复定义解决方案

原创|使用教程|编辑:张莉|2025-09-28 11:39:22.433|阅读 72 次

概述:在Parasoft C/C++test中出现main函数重复定义的情况,通常是由于以下两个原因之一造成的:一是main函数所在的文件被进行了插桩操作;二是测试配置中未勾选“重命名main()函数”选项。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

在Parasoft C/C++test中出现main函数重复定义的情况,通常是由于以下两个原因之一造成的:一是main函数所在的文件被进行了插桩操作;二是测试配置中未勾选“重命名main()函数”选项。

>>点击获取Parasoft C/C++test试用

正常来说,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


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
利记足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 真人boyu·博鱼滚球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 最大网上PM娱乐城盘口(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规雷火竞技官方买球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 雷火竞技权威十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼信誉足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 权威188BET足球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规188BET足球大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)