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

Fresh installation of VS 2012 will not build default console application: Missing SDKDDKVer.h (and stdio.h / CRT)

本文关键字:SDKDDKVer 缺少 应用程序 stdio CRT 控制台 构建 VS 安装 2012 新安装      更新时间:2023-10-16

我已经在我的Windows 7 64位机器上使用VS 2012 Professional的试用版大约一个月了。

今天,我注意到Platform Toolset选项(项目属性)被设置为Visual Studio 2010 (v100),这似乎很奇怪,因为我运行的是VS 2012。将"平台工具集"更改为VS 2012会导致问题标题中指出的错误:

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

…当构建stdafx.cpp(错误本身发生在文件targetver.h)。

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

因为我最近购买了VS 2012专业版,我卸载了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':没有这样的文件或目录

我该怎么办?

.

附录:在更改路径设置后(参见下面回答下面的评论),以便VS 2012找到SDKDDKVer.h,它仍然无法找到stdio.h,这是一个更严重的问题,因为VC11版本的stdio.h(以及所有VC11 CRT头文件)在机器上任何地方都不可用。

不幸的是,微软仍然没有解决VS 2012安装过程中的这些主要错误。只有的方式,我发现得到一个工作的VS 2012安装包括所有的VC11 CRT文件是:

  • 彻底清除系统中所有的MS产品(这可能有点过分,但我必须在卸载VS 2012的同时至少卸载VS 2010)
  • 删除下面答案评论中注明的注册表项(为了安全)
  • 删除残留目录(为了安全)
  • 重启(安全)
  • 从头开始安装VS 2012 从。iso,而不是安装程序(假设安装文件是从MSDN站点下载的)(使用像Power2Go这样的程序挂载。iso)
  • 然后,绝对确保安装VS 2012 Service Pack 1(通过"Windows Update"控制面板)(不做这一步,VC11 CRT头仍然没有安装在机器上的任何地方)
  • 最后,映射Windows SDK库目录,如[此链接]中所描述的(链接现在指向一个诈骗网站,删除)(不做后一步,链接器无法找到Windows内核库的路径)

…然后有一个工作的vs2012安装。

非常感谢,微软。

在我设置了Visual Studio 2013之后,我对一个简单的c++代码有相同的sdk错误。我用下面的步骤解决了同样的问题:

  • 选择项目属性>配置> vc++目录>包括目录并添加: c:Program Files (x86)Microsoft sdk Windowsv7.1AInclude
  • 选择项目属性>配置> vc++目录>库目录并添加: c:Program Files (x86)Microsoft sdk Windowsv7.1ALib

配置后,我有关于rc.exe链接错误的问题。对于这个问题还需要一个条件:

  • RC.exeRcDll.dll文件从C:Program files (x86)Microsoft sdk Windowsv7.1ABin复制到C:Program files (x86)Microsoft Visual Studio 12.0VC Bin

在所有这些配置步骤之后,您可以构建一个简单的"Hello World!"示例,如果幸运的话,可以运行。

from MSDN forum:

查看这个项目的Include目录,我看到如下

(WindowsSdkDir)包括美元

"WindowsSdkDir"定义为"C:Program Files (x86)Windows Kits8.0"

不幸的是,文件夹"C:Program Files (x86)Windows Kits8.0Include"实际上没有其中有任何头文件。相反,它包含三个子文件夹。其中之一是名为"shared"的文件夹,它恰好包含在错误信息中显示的"SDKDDKVer.h"文件。

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

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

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

我还应该注意到,我是在Windows 7 w SP 1虚拟机上安装的,在安装过程中没有连接到互联网(我在其他地方读到一些人认为安装过程中的互联网连接将解决这个问题,但我个人无法验证,现在我已经工作了,我不打算回去测试它)。