减小字体
增大字体
作者:佚名 来源:本站整理 发布时间:2015/2/25 20:51:02
我们知道这样肯定是有问题的,但是问题出在哪里呢?
首先,我们编译工程,output显示:
1>------ 已启动全部重新生成: 项目: Test, 配置: Debug Win32 ------
1> hello.cpp
1> hello.cpp
1> main.cpp
1> 正在生成代码...
1>Debug\hello.obj : warning LNK4042: 对象被多次指定;已忽略多余的指定
1> Test.vcxproj -> F:\project\TcpDemo\Debug\Test.exe
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
注意这个warning, 由于两个文件重名了,即使它们在不同的目录,但是生成的obj文件是在同一个目录下,
所以导致相同名字的obj文件只有一个。这样就很清楚了Hello类只有一个编译成功了,另外一个被忽略了。
这样并不是我们想要的,因为即使这两个类名字相同但实现并不同。
简单的解决方法改个名字就可以了(还有一种方法最后再说),但是这样编译的时候又会造成一个问题,重复定义。
_______________________________
其实我主要想说的是文件重名问题,改个文件名就Ok了,
但是有时候我们在不想改名字或者不方便改名的情况下怎么办呢?
在重复的cpp文件上单击鼠标右键->属性->输出文件->对象文件名$(IntDir)后面加上我们想要生成的对象文件名(只要obj文件不重名就可以了),如:
修改temp2目录下的hello.cpp对象文件名为:$(IntDir)hello2。