新安装的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)
我已经在我的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.exe和RcDll.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虚拟机上安装的,在安装过程中没有连接到互联网(我在其他地方读到一些人认为安装过程中的互联网连接将解决这个问题,但我个人无法验证,现在我已经工作了,我不打算回去测试它)。
- 函数中堆分配的效果与缺少堆分配的情况
- 缺少类型说明符,显式类型为"缺少错误"
- 在一定长度后从数组中打印时缺少整数
- 使用基类指针创建对象时,缺少派生类析构函数
- 不同的Visual Studio版本中缺少.dll
- 如何修复带有 clang 的参数'args'缺少默认参数的问题?
- 错误"Could not find Boost"(缺少:上下文标头)
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 为什么 std::span 缺少 cbegin 和 cend 方法?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- MSYS2 MinGW程序包中缺少grpc_cpp_plugin协议
- CLANG格式在缺少libtinfo.so.5库中不起作用
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- gRPC 生成的代码缺少服务实现
- 程序无法启动,因为缺少 libmpc-3.dll
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- Visual SDKDDKVER.H缺少,但是安装了WinSDK?(C 标题问题)
- 新安装的VS 2012将不会构建默认的控制台应用程序:缺少SDKDDKVer.h(和stdio.h / CRT)