機器同時安裝了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\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_x86);並保存。再去啓動VS2012並編譯工程就可以正常編譯鏈接了。