2

我在我的 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(Professional)。总而言之,卸载/重新安装需要 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 headers)在任何地方的机器上都不可用。

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

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

...然后有一个 VS 2012 的工作安装。

非常感谢,微软。

4

3 回答 3

6

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

  • 选择Project Properties>Configuration>VC++ Directories>Include Directories并添加: 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!” 示例并运行,如果你幸运的话。

于 2014-12-03T14:10:19.710 回答
1

来自MSDN 论坛

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

$(WindowsSdkDir)包括

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

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

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

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

于 2013-04-06T08:17:52.407 回答
1

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

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

于 2016-08-26T18:31:56.543 回答