Visual C++ 2008 Express - cpp文件名冲突

2 filenames conflict visual-c++

我正在使用gcc 4和cmake开发GNU/Linux应用程序来管理编译过程.我发现当有两个具有相同名称但在其他目录和命名空间中的文件时,没有问题,如下所示:

.  
|-- gfx  
|   |-- Object.cpp  
|   `-- Object.h  
`-- logic  
    |-- Object.cpp  
    `-- Object.h  
Run Code Online (Sandbox Code Playgroud)

First Object类位于Gfx名称空间中,第二个位于Logic名称空间中.

然后我尝试使用Visual C++ 2008 Express Edition编译该项目.Linker抛出了几个关于Gfx :: Object类不存在的实现的错误.经过几次检查,我发现:

  • Visual C++正在跟踪两个Object.cpp文件
  • 当在第一个或第二个文件中发生更改时,对象单元的重新编译将排队
  • 无论实际修改了哪个文件,它总是只重新编译第二个Object.cpp

我还发现Visual C++不允许创建两个具有相同名称的类.

这有解决方案吗?我真的不想重构很大一部分代码.

Han*_*ant 7

两个Object.cpp文件都将编译为Object.obj.进入同一目录.换句话说,编译的最后一个将覆盖第一个的Object.obj.是的,链接器不会被激动,你会得到多个定义的符号,因为它链接相同的Object.obj文件两次.

修复很简单,右键单击Object.cpp文件之一,属性,C/C++,输出文件.将对象文件名从$(IntDir)\更改为,例如,$(IntDir)\ $(InputName)2.obj