从VS2008升级后,VS2012中的构建项目显示错误

时间:2012-12-17 09:30:09

标签: c++ visual-studio-2012 upgrade

我们的团队正在将整个基线从VS2008迁移到VS2012。那里有超过400个C ++项目。有6个C ++项目显示有线错误,例如:

1>------ Rebuild All started: Project: SSLT, Configuration: Release Win32 ------
1> stdafx.cpp
1> ???
1>c1xx : fatal error C1083: Cannot open source file: '???': No such file or directory
1> ??????????????????????????????
1>c1xx : fatal error C1083: Cannot open source file: '??????????????????????????????': No such file or directory
All files which are the parameters of cl.exe seems in wrong encoding, and cl.exe can't find them.
Firstly, i think it must be encode issues of .vcxproj, so i save as other encoding style. But still happens.
Then i re-upgrade these projects with such issue, but always build error.

最后,我将项目平台工具集更改回VS2008,然后构建pass。所以我认为这不是因为项目文件编码格式。使用2012编译器时,我不知道它们有什么问题。这些项目使用2008编译器不构建错误。正如我从VS2010所知,项目格式发生了很大变化,所以我找不到任何线索。

3 个答案:

答案 0 :(得分:1)

是的,还有另一个原因造成这样的问题。升级后,* .vcxproj文件中的一个属性产生了一个不合适的换行符,例如:      / Zm300       / bigobj%(AdditionalOptions) 如果我改回来:     / Zm300 / bigobj%(AdditionalOptions) 然后运作良好,建立通行证。

有这样问题的项目,其中80%是因为这样的问题。

答案 1 :(得分:0)

我没有VS2012安装来检查这个,但可能有一个函数在其DLL之一中以编程方式转换项目 - 尝试使用基于dumpbin的脚本或通过检查堆栈进行搜索转换示例项目时跟踪procmon

答案 2 :(得分:0)

感谢您的回复,我使用脚本中的devenv.exe / upgrade * .vcproj自动升级我们的项目。 今天我发现根本原因是预编译头文件:stdafx.h。 这是因为错误的预编译头文件引用。它会导致文件名混乱。