全新安装VS 2012不会构建默认控制台应用程序:缺少SDKDDKVer.h(和stdio.h / CRT)

时间:2013-04-05 23:36:09

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

我在Windows 7 64位计算机上使用VS 2012 Professional的试用版约1个月。

今天,我注意到Platform Toolset选项(项目属性)设置为Visual Studio 2010 (v100),这似乎很奇怪,因为我正在运行VS 2012.将“平台工具集”更改为VS 2012导致这个问题标题中提到的错误:

  

无法打开包含文件:'SDKDDKVer.h':没有这样的文件或目录

...在构建stdafx.cpp时(错误本身出现在文件targetver.h中)。

我之前浏览的论坛讨论暗示VS 2010安装期间VS 2010的存在可能导致了这个问题。 (我目前没有这些帖子的链接。)

因为我最近购买了VS 2012 Professional,所以我卸载了VS 2012的试用版,然后从MSDN网站上重新下载了重新安装的付费版VS 2012(专业版)。总而言之,卸载/重新安装需要2个小时左右。

在重新安装VS 2012期间,我非常关注所有可能的选项,看看是否有任何选项可能导致VS 2012安装程序“跳过”VS 2012头文件或其他VS 2012组件,并使用而是VS 2010组件。我找不到这样的选择。

VS 2012的重新安装成功。

我在新工作区中创建了一个新的控制台项目(请注意,尽管卸载/重新安装,但我的“最近的项目列表”仍然显示了我最近的VS 2012项目)。新控制台项目的项目设置显示正在使用正确的工具集 - Platform Toolset = Visual Studio 2012 (v110)

不幸的是,构建开箱即用的VS 2012控制台应用程序(包括预编译的标题选项,但在“创建项目向导”中没有其他选项)会导致完全相同的错误:

  

无法打开包含文件:'SDKDDKVer.h':没有这样的文件或目录

我该怎么办?

ADDENDUM:请注意以后的读者;更改路径设置后(请参阅下面的答案下方的注释)以便VS 2012找到SDKDDKVer.h,但它仍然无法找到stdio.h,这是一个更严重的问题,因为VC11版本的stdio.h(以及所有VC11 CRT)标头)在任何地方都没有。

不幸的是,微软仍未在VS 2012安装过程中解决这些主要错误。我发现安装包含所有VC11 CRT文件的VS 2012安装的唯一方式是:

  • 彻底清除所有MS产品的系统(这可能有些过分,但我 至少卸载VS 2010除了卸载VS 2012)
  • 删除以下答案的注释中注明的注册表项(为了安全起见)
  • 删除剩余目录(为了安全起见)
  • 重启(为安全起见)
  • 从头开始安装VS 2012 来自.ISO,而不是安装程序(假设安装文件是从MSDN站点下载的)(使用像Power2Go这样的程序来安装.iso)
  • 然后,绝对确保安装VS 2012 Service Pack 1(通过“Windows Update”控制面板)(不执行此步骤,VC11 CRT标头仍未安装在计算机上的任何位置)
  • 最后,如[此链接]中所述映射Windows SDK库目录(链接现在指向一个骗局站点,已删除)(没有执行后一步骤,链接器无法找到Windows内核库的路径)

......那么VS 2012的工作安装。

非常感谢,微软。

3 个答案:

答案 0 :(得分:6)

在我设置Visual Studio 2013后,我对一个简单的C ++代码有同样的sdk错误。我通过以下步骤解决了同样的问题:

  • 选择项目属性>配置> VC ++目录>包含目录并添加: c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \包括
  • 选择项目属性>配置> VC ++目录>库目录并添加: c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \库

在配置之后我遇到了关于rc.exe链接错误的问题。对于这个问题,还需要做一件事:

  • C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin <复制 RC.exe RcDll.dll 文件/ strong>并将它们转到 C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin

完成所有这些配置步骤后,您可以构建一个简单的“Hello World!”例如,如果你幸运的话就跑。

答案 1 :(得分:1)

来自MSDN forum

  

查看此项目的Include目录,我看到以下

     

$(WindowsSdkDir)包括

     

“WindowsSdkDir”被定义为“C:\ Program Files(x86)\ Windows Kits \ 8.0 \”

     

不幸的是,文件夹   “C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \”实际上并非如此   有任何头文件。相反,它包含三个子文件夹。   其中一个是名为“shared”的文件夹,它恰好包含在内   “SDKDDKVer.h”文件显示在错误消息中。

如果是这种情况,请将$(WindowsSdkDir)include替换为VC ++目录下项目属性中包含路径中的三个文件夹名称(至少为$(WindowsSdkDir)include\shared)。

要将此路径永久添加到VS2012,您需要更改Microsoft.Cpp.Win32.user.props文件夹下的C:\Users\xxx\AppData\Local\Microsoft\MSBuild\v4.0文件(其中xxx是您的用户名)。

答案 2 :(得分:1)

我在VS2013遇到了这个问题。当我首先单独安装Windows SDK 8.1,然后是Visual Studio 2013时,它解决了问题。

我还应该注意到我在Windows 7 w SP 1虚拟机上安装它并且在安装过程中没有连接到互联网(我在别处读过一些人认为安装过程中的互联网连接会修复问题,但我个人无法验证,现在我有它工作,我不打算回溯并测试它。)