warning MSB8003: Could not find WindowsSDKDir variable from the registry

本文分享了作者在安装Visual Studio 2013过程中遇到的问题及其解决办法。主要问题是关于警告MSB8003未能从注册表中找到WindowsSDKDir变量,通过安装WDK8.1最终解决了编译问题。

安装了几天VS都失败了。很郁闷。我安装的是VS2013 Ultimate版本的。当然是盗版的。。屌丝有钱可能会去支持下正版。可是现在连买电脑的钱都没得。月月发工资之前都被女朋友告知有各种开销的说。。

问题:warning MSB8003: Could not find WindowsSDKDir variable from the registry.以及后面告诉我WindowsSDKDir.h找不到。。。

问题发生之后我百度谷歌甚至跑去官网上找答案。然后修改了工程文件以及增加了头文件库打了vs版本3的补丁都没用处。

客官,你猜怎样。

老子最后去装了WDK 8.1 vs2013神奇的活过来了编译完全没问题了。但是注释依然很恼火,各种报错。

注意我这里没有重装vs。就这样吧。其他不说,屌丝要去学习wifi 终端的架构了。希望遇到相同问题的朋友可以有所帮助。

<think>我们遇到了三个主要错误: 1. MSB8003: 无法从注册表中找到WindowsSdkDir_71A变量 2. MSB8003: 无法从注册表中找到WindowsSdkDir变量 3. C1083: 无法打开包括文件:"SDKDDKVer.h" 这些错误表明VS无法定位Windows SDK的安装路径,导致编译失败。下面逐步解决: ### 错误原因分析 - **MSB8003错误**:VS在注册表中查找Windows SDK路径失败,通常是因为: - 未安装项目所需的Windows SDK版本(如7.1A或当前版本) - VS安装时SDK路径注册信息损坏 - **C1083错误**:因SDK路径缺失,编译器找不到`SDKDDKVer.h`(该文件属于Windows SDK) ### 解决方案步骤 #### 方法1:安装缺失的Windows SDK 1. **检查已安装SDK**: - 打开VS安装器 → 修改 → 单个组件 → 搜索“Windows SDK” - 查看是否安装了项目所需的SDK版本(如错误提示7.1A,需安装对应版本) 2. **安装通用解决方案**: - 安装最新Windows 10/11 SDK(兼容大多数项目): ```markdown 操作路径: VS安装器 → 修改 → 单个组件 → 勾选: • “Windows 10 SDK (10.0.19041.0)”(推荐) • 或更高版本(如10.0.22621.0) ``` #### 方法2:修复注册表路径(若已安装SDK但路径未注册) 1. **手动设置SDK路径**: - 打开项目属性 → 常规 → Windows SDK版本 → 选择已安装的SDK版本(如10.0.19041.0) - 若下拉菜单为空,说明注册表信息丢失,需执行方法3 #### 方法3:重注册SDK(管理员权限) 1. 以管理员身份打开CMD/PowerShell 2. 导航至SDK安装目录(默认路径): ```cmd cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86" ``` 3. 运行注册命令: ```cmd regsvr32 winsdk.dll ``` #### 方法4:紧急绕过方案(不推荐长期使用) 若需快速编译,可临时注释项目中的SDK头文件引用: 1. 在`stdafx.h`或报错文件中注释掉: ```cpp // #include <SDKDDKVer.h> ``` 2. 手动定义Windows版本宏: ```cpp #define WINVER 0x0A00 // Windows 10 #define _WIN32_WINNT 0x0A00 ``` ### 验证修复 1. 重启VS → 清理解决方案(生成 → 清理解决方案) 2. 重新生成(Ctrl+Shift+B) > ⚠️ 注意:若项目明确依赖旧版SDK(如7.1A),需从[微软存档](https://www.microsoft.com/en-us/download/details.aspx?id=8442)下载安装 §§相关问题§§ 1. 如何查询当前系统已安装的Windows SDK版本及其注册表路径? 2. 当安装新版SDK后旧项目仍提示找不到SDKDDKVer.h,如何强制项目引用新SDK路径? 3. 在无法修改注册表的环境(如企业电脑)中,如何通过本地路径重定向解决WindowsSdkDir缺失问题? 4. 如果必须使用已不支持的SDK版本(如Windows SDK 7.1),如何配置VS2022使其兼容? 5. 错误C1083还可能由哪些文件路径配置错误引起?如何系统排查包含文件缺失问题? </think>### Windows SDK缺失错误解决方案 #### 错误原因分析 1. **MSB8003注册表错误** - VS无法从注册表获取Windows SDK路径(`WindowsSdkDir_71A`和`WindowsSdkDir`) - 通常由以下原因引起: - 未安装项目所需的Windows SDK版本 - SDK注册信息损坏 - VS平台工具集选择错误 2. **C1083头文件缺失** - `SDKDDKVer.h`是Windows SDK核心头文件 - 缺失原因: - SDK未正确安装 - 项目属性中SDK版本配置错误 --- ### 完整解决步骤 #### 第一步:安装所需Windows SDK 1. **通过VS安装器安装** - 打开Visual Studio Installer → 修改当前安装 → 单个组件 - 勾选安装: ``` ✓ Windows 10 SDK (10.0.19041.0 或更高版本) ✓ Windows 10 SDK for UWP C++ Apps ``` - *若项目需要旧版SDK*:额外勾选`Windows 8.1 SDK` 2. **手动安装SDK(可选)** - [下载Windows 11 SDK](https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/) - [下载Windows 10 SDK](https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/) #### 第二步:修复项目配置 1. **修改平台工具集** - 项目 → 属性 → 常规: - 平台工具集 → 选择`v143`(VS2022)或`v142`(VS2019) - Windows SDK版本 → 选择已安装的版本(如10.0.19041.0) 2. **设置包含路径** - 项目 → 属性 → VC++目录: ```ini 包含目录添加: $(WindowsSdkDir)Include\$(WindowsTargetPlatformVersion)\shared $(WindowsSdkDir)Include\$(WindowsTargetPlatformVersion)\um ``` #### 第三步:注册表修复(管理员权限) 1. 新建`fix_sdk.reg`文件,写入: ```reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0] "InstallationFolder"="C:\\Program Files (x86)\\Windows Kits\\10\\" "ProductVersion"="10.0.19041.0" ``` 2. 双击运行 → 重启VS #### 第四步:环境验证 1. 打开**开发者命令提示符**(Developer Command Prompt): ```cmd > echo %WindowsSdkDir% // 应显示有效路径 > dir "%WindowsSdkDir%Include\*ver.h" // 检查SDKDDKVer.h是否存在 ``` --- ### 备选解决方案 ```mermaid graph LR A[错误未解决] --> B[创建新项目] B --> C[手动迁移源码] C --> D[重新配置属性] A --> E[修改平台工具集] E --> F[设为v141_xp兼容模式] F --> G[安装XP兼容SDK] ``` > ️ 终极方案: > 若仍失败,在`stdafx.h`中**临时注释**SDKDDKVer.h引用: > ```cpp > // #include <SDKDDKVer.h> > #define WINVER 0x0601 // 手动定义Windows版本 > #define _WIN32_WINNT 0x0601 > ```
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值