机器同时安装了Visual Studio 2012和低版本(如VS2010),运行一段时间后会出现一个bug。新建或旧的Win32/MFC工程在编译时,编译器提示:fatal error C1083: 无法打开包括文件:“SDKDDKVer.h”: No such file or directory
原因:出现这个bug的原因是VS2012中关于Windows SDK的路径宏定义和VS2010不同,而在某种情况下VS2010的配置串扰到了VS2012。VS2010中定义包含目录的宏为$(WindowsSdkDir)include,指向的目录是C:\Program Files (x86)\Windows Kits\8.0\Include。而搜索到SDKDDKVer.h文件在C:\Program Files(x86)\Windows Kits\8.0\Include\shared路径下。所以这里应更正为使用VS2012中新的宏定义$(WindowsSDK_IncludePath)。该宏包括了三个路径:
C:\Program Files (x86)\Windows Kits\8.0\Include\um
C:\Program Files (x86)\Windows Kits\8.0\Include\shared
C:\Program Files (x86)\Windows Kits\8.0\Include\winrt
类似还需要更改的是关于库目录的宏定义,VS2010下的$(WindowsSdkDir)lib指向为C:\Program Files (x86)\Windows Kits\8.0\Lib,需要更改为
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\arm
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86
那如何更改VS2012的配置环境,使得这个宏生效呢?
解决方法:修改Visual Studio 2012的props配置文件。用记事本打开C:\Users\<me>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props,然后在<IncludePath>字段中添加$(WindowsSDK_IncludePath);再在<LibraryPath>字段中添加$(WindowsSDK_LibraryPath_arm);$(WindowsSDK_LibraryPath_x64);$(WindowsSDK_LibraryPath_x86);并保存。再去启动VS2012并编译工程就可以正常编译链接了。
VS2012找不到SDKDDKVer.h的Bug修复,布布扣,bubuko.com
原文地址:http://blog.csdn.net/tianrolin/article/details/29208847