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

Posted

技术标签:

【中文标题】全新安装 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) 【发布时间】:2013-04-05 23:36:09 【问题描述】:

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

今天,我注意到 Platform Toolset 选项(项目属性)被设置为 Visual Studio 2010 (v100),这看起来很奇怪,因为我正在运行 VS 2012。将“平台工具集”更改为 VS 2012 导致在本题题目:

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

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

我之前浏览的论坛讨论暗示,在 VS 2012 安装期间存在 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':没有这样的文件或目录

我该怎么办?

.

附录:未来读者的注意事项;更改路径设置后(请参阅下面答案下方的 cmets)以便 VS 2012 找到 SDKDDKVer.h,但它仍然无法找到 stdio.h,这是一个更严重的问题,因为 stdio.h 的 VC11 版本(以及所有 VC11 CRT headers) 在任何地方的机器上都不可用。

不幸的是,微软在他们的 VS 2012 安装过程中仍然没有解决这些主要错误。我发现获得包括所有 VC11 CRT 文件的有效 VS 2012 安装的唯一方法是:

彻底清除系统中的所有 MS 产品(这可能有点矫枉过正,但我​​必须在卸载 VS 2012 的同时至少卸载 VS 2010) 将 cmets 中记录的注册表项删除到下面的答案中(为了安全起见) 删除剩余目录(安全起见) 重启(为了安全起见) 从头开始安装 VS 2012从 .ISO,而不是安装程序(假设安装文件是从 MSDN 站点下载的)(使用 Power2Go 之类的程序来安装 .iso) 那么,请务必安装 VS 2012 Service Pack 1(通过“Windows Update”控制面板)(不执行此步骤,VC11 CRT 头文件仍然没有安装在机器上的任何位置) 最后,按照 [此链接] 中的描述映射 Windows SDK 库目录(链接现在指向诈骗网站,已删除)(如果不执行后面的步骤,链接器将无法找到 Windows 内核库的路径)

... 那么有一个 VS 2012 的工作安装。

非常感谢,微软。

【问题讨论】:

【参考方案1】:

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

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

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

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin 复制 RC.exeRcDll.dll 文件 并将它们传递到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

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

【讨论】:

【参考方案2】:

来自MSDN forum:

查看此项目的包含目录,我看到以下内容

$(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,您需要更改 C:\Users\xxx\AppData\Local\Microsoft\MSBuild\v4.0 文件夹下的 Microsoft.Cpp.Win32.user.props 文件(其中 xxx 是您的用户名)。

【讨论】:

这个建议来自我在问题中引用的论坛帖子,但我没有提供链接,谢谢。我已经尝试将包含路径中的 $(WindowsSdkDir)include 条目替换为指向正确位置的条目。事实上,问题更深层次,我没有附加我的问题来说明更深层次的问题。编译器能够在更改后正确定位 SDKDDKVer.h 文件。但是,所有 VC11 CRT 头文件都丢失了——它们根本不存在于计算机上的任何位置。 VS 2012 有安装问题。我必须发布另一个问题。 只是为了检查:所以C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include 文件夹不存在,或者是空的? 正确。该文件夹包含少量文件(我忘记了,因为我已经卸载了所有 Visual Studio 版本;请参阅以下评论),但它不包含该文件夹或任何子文件夹中的任何头文件。完全没有标题。许多帖子都讨论了这个问题(例如,social.msdn.microsoft.com/Forums/en-US/vssetup/thread/… 和许多其他帖子)。在卸载所有以前的 VS 版本(和相关注册表项)并重新启动后,我现在从 .iso 下载安装 VS 2012,而不是安装程序。我会报告的。 在卸载每个已安装的 Microsoft 产品(所有版本的 VS、所有版本的 SQL Server、Office、所有版本的 .NET 运行时、所有 VC 可再发行组件以及添加/删除程序);通过文件系统(特别是 Program Files [(x86)] 并手动删除所有剩余的相关 Microsoft 目录;删除注册表中 HKLM 和 HKCU 的 32 位和 64 位软件节点中的所有相关 VS 条目,重新启动,安装来自.iso(不是instllr)的VS2012,安装VS 2012 SP1,并遵循lucatarrini.net/?p=1442,它可以工作。【参考方案3】:

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

我还应该注意,我在 Windows 7 w SP 1 VM 上安装了它,并且在安装过程中它没有连接到互联网(我在其他地方读过一些人认为安装过程中的互联网连接会修复问题,但我个人无法验证,现在我已经让它工作了,我不会回溯和测试它)。

【讨论】:

以上是关于全新安装 VS 2012 不会构建默认控制台应用程序:缺少 SDKDDKVer.h(和 stdio.h / CRT)的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 安装 VS 10 不会构建

VS 2012 构建 Hello World 时出错:“操作无法完成。参数不正确”

有哪位知道VS2012和VS2013能同时安装吗? 或者如何卸载干净12装13

NuGet 包管理器控制台默认项目下拉列表为空

构建与视频驱动程序 VS2012 相关的 WPF 的问题

在构建容器应用程序时,VS2013无法识别添加的OCX控制方法