vs2008 编译两个同文件名源文件只生成一份obj文件之bug

本文详细介绍了如何通过调整编译选项解决Visual Studio 2008下不同目录下存在相同源文件导致的编译错误问题,并提供了避免混乱管理的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


vs2008 建一个工程test 添加两个相同源文件test.cpp,这两个test.cpp不在同一个文件夹, 两个test.cpp都写了一个全局testFun()函数, build 工程test,居然不报错, 但如果一个工程两个不同文件名的源文件,都写一个testFun()函数,build工程会报错重定义testFun, 


这是编译依赖的问题,编译cpp的时候都会检查对应的obj是否比当前cpp新,如果新的话就不编译当前cpp文件了。
造成的结果就是始终一个cpp没有被编译。

如果你修改编译选项让不同目录的cpp 输出到不同的文件夹,那么检查obj的问题就不会出现了。
于是就给你报连接错误。


解决此问题的方案a:

修改编译选项,将obj文件生成位置设置到跟源文件同一目录。IDE设置 :C++ -> output files -> Obj file name  

将obj默认输出目录$(IntDir)改成$(InputDir)\obj\

方案a有一个缺陷,源文件夹会产生很多obj文件,管理上有些混乱。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值