我们的团队正在将整个基线从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所知,项目格式发生了很大变化,所以我找不到任何线索。
答案 0 :(得分:1)
有这样问题的项目,其中80%是因为这样的问题。
答案 1 :(得分:0)
我没有VS2012安装来检查这个,但可能有一个函数在其DLL之一中以编程方式转换项目 - 尝试使用基于dumpbin
的脚本或通过检查堆栈进行搜索转换示例项目时跟踪procmon
。
答案 2 :(得分:0)
感谢您的回复,我使用脚本中的devenv.exe / upgrade * .vcproj自动升级我们的项目。 今天我发现根本原因是预编译头文件:stdafx.h。 这是因为错误的预编译头文件引用。它会导致文件名混乱。