帮 vs2019 找回丢失的 SDK
缘起
前一段时间,有网友遇到一个奇怪的问题,说他机器上的 vs2019
编译 C++
工程报错。我当时一听就有两个怀疑:
工程设置不对。
vs2019
没装好。
因为新建一个最简单的工程,编译也报一样的错误,所以可以排除工程设置的问题了。那只有可能是 vs2019
的问题了。但是具体是哪里的问题呢?
他按照错误提示搜索到了如下链接:
https://developercommunity.visualstudio.com/content/problem/761788/msb8036-the-windows-sdk-version-100183620-was-not.html
根据链接里的提示,做过尝试,没能解决问题。后来在我们沟通的过程中,他自己解决了问题,这不就是大名鼎鼎的橡皮鸭调试法吗?当他的问题解决后,我特意在本地重现了整个过程,做了一些调查,整理成本文,分享给大家。
编译受阻
我用 vs2019
新建了一个最简单的 Hello world
工程,编译,报错如下:
Error MSB8037 The Windows SDK version 10.0.18362.0 for Desktop C++ x86 Apps was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution".
更直观的报错截图如下:
问题排查
既然提示找不到对应版本的 SDK
,那么先到工程属性里看一下对应的配置。在工程上,右键
-> 属性
。在工程属性对话框中选择 Configuration Properties
下的 General
。在右侧查看 Windows SDK Version
的值,确实是 10.0.18362.0
,如下图。
本地搜一下10.0.18362.0
,看看本地是否存在相关的路径。
本地也存在相关路径。能想到的可以怀疑的地方都排除了。接下来请出我们的老朋友 —— process monitor
。
深入调查
打开 process monitor
,开启监视,在 vs
中开始编译,问题重现后,停止监视。
下面就要进行最重要的步骤了—— 过滤。
使用 process monitor
快速解决问题的关键在于过滤出与问题有关的事件!
我们需要根据什么条件过滤呢?
一般操作结果是成功的事件对我们帮助不大,所以首先过滤掉 Result
是 SUCCESS
的事件。
既然提示的是找不到 10.0.18362.0
版本的 SDK
,相关错误应该和 10.0.18362.0
有关,所以只保留 Path
中包含 10.0.18362.0
的记录。
没想到,效果这么好,只有六条。
其中,有两条是注册表中找不到 HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0.18362.0
(这个注册表项不是必须存在的,在能正常编译的机器上也可能找不到),最后一条是找不到文件 C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\sdkddkver.h
。看来,应该是我本地少了这个文件。因为我故意把这个文件重名了,改回来,重新编译,搞定。
具体调查过程请参考下面的屏幕录像。
后记
跟这位网友沟通的整个过程特别顺畅,省心。他已经根据线索在网上搜索了相关资料,自己摸索了一番。怀疑哪里有问题,立刻能查看相关的配置进行排查。最后,在沟通的过程中,他自己就把问题解决了。原来,他在前几天把一些文件的位置给改了,改回来就好了。后来聊天得知,他才大二,后生可畏!
总结
在帮网友解决问题的过程中,我扮演的角色其实类似 “橡皮鸭”。也希望大家遇到问题时,把问题描述给周围的人,也许自己就知道问题出在哪了。屡试不爽!
猜你喜欢:
VS 系列:
排错实战——解决c++编译错误:error C2059: illegal token on right side of '::'
善用 vs 中的错误列表和输出窗口,高效查找 C++ 多工程编译错误
转储文件系列:
转储系列文章总结
转储文件知多少
你需要知道的 N 种抓取 dump 的工具
你生成的转储文件有问题吗?
向大厂看齐!为自己的程序增加自动转储的功能!
内核转储,开抓啦!
蓝屏(BSOD)转储设置,看本文就够了!
系统蓝屏的几种姿势,确定不了解下么?
本地内核调试环境搭建,就这么简单!
双机内核调试 101
使用 VMware + win10 + VirtualKD + windbg 从零搭建双机内核调试环境
使用 VMware + win10 + vs2019 从零搭建双机内核调试环境
本地内核调试神器 —— livekd 使用总结
调试系列:
调试实战——你知道怎么使用DebugView查看调试信息吗?
调试实战——程序CPU占用率飙升,你知道如何快速定位吗?
调试实战——崩溃在ComFriendlyWaitMtaThreadProc
调试实战——使用windbg调试崩溃在ole32!CStdMarshal::DisconnectSrvIPIDs
调试实战——调试PInvoke导致的内存破坏
调试实战——调试excel启动时死锁
调试实战——调试DLL卸载时的死锁
调试实战——调试TerminateThread导致的死锁
调试实战——从堆里找回“丢失”的代码
调试实战——从堆里找回“丢失”的代码相关命令简介
排错系列:
排错实战——1分钟解救 run 不出来的 Autoruns
排错实战——VS清空最近打开的工程记录
排错实战——拯救加载调试符号失败的IDA
排错实战——你知道拖动窗口时只显示虚框怎么设置吗?
排错实战——解决Tekla通过.tsep安装插件失败的问题
排错实战——使用process explorer替换任务管理器
排错实战——通过对比分析sysinternals事件修复程序功能异常
欢迎留言交流
需要你的
帮 vs2019 找回丢失的 SDK相关推荐
- 电脑文件剪切到U盘,为什么不见了?这4个技巧帮你找回丢失文件
文件剪切是指对计算机中的文件进行移动操作,将文件从原先的位置剪切到新的位置,然后将这些文件粘贴到新的位置,以完成文件的整个剪切操作.虽然剪切操作起来并不难,但是近日,有位小伙伴遇到了将电脑文件剪切到u ...
- 历经24小时,依靠全球定位,帮女朋友找回丢失的华为手机!
本人很少写非技术文章,由于这两天找回手机的经历过于魔幻,所以必须分享一波.手机丢了金钱的损失先不说,但是里面的资料都是无比重要的,正好自己亲身经历,并且也成功找回了手机,索性就把经验分享一下,希望能给 ...
- 快速搭建GPS追踪系统,帮你找回丢失的女朋友
许多人常常在陪女朋友逛街时,一不留神就把女朋友弄丢了,那个如何有效的找回女朋友呢?我们从技术党的角度出发,下面我为大家介绍一款神器. Traccar 这是一个开源的 GPS 跟踪系统.此存储库包含基于 ...
- origin账号能买吗_一名Origin用户价值上万的游戏账号被莫名删除 EA客服起初竟拒绝帮他找回丢失的账号...
EA的Origin是一个像Steam一样的游戏发售平台,虽然它不如Steam有名,但是EA的游戏都只在这里发售,所以也拥有不少用户.不过最近,一名Origin用户发现,他账户下的所有游戏居然莫名消失了 ...
- U盘文件丢失了怎么办?一串英文字符即可快速帮你找回,秒学!
日常工作中,U盘是我们必不可少的随身小工具,用它来拷贝文件很方便快捷,可是一旦U盘文件丢失了,很多努力都功亏一篑,甚至耽误很多大事情,不过没关系,接下来,小编教大家一招,只需一串英文字符即可快速帮你找 ...
- id 查找apple_厉害!竟能利用苹果ID锁找回丢失手机?
原标题:厉害!竟能利用苹果ID锁找回丢失手机? 不少朋友由于是新买的苹果手机,对其安全功能设置还不尽了解.其实,苹果系统自带的安全程序十分完善,其中最重要的就是查找我的iPhone里的相关功能.今天, ...
- 苹果手机iphone丢了怎么找回来?八步帮你找回苹果手机
本教程不能肯定能找回苹果手机,苹果手机丢了能否找回肯定是有概率的,而且找回的概率肯定不大,下面的方案,无论是否可以找回手机,至少提醒我们苹果手机丢失以后如何规避风险或者把风险降到最低,请广大苹果丢友参 ...
- 让模糊图片变视频,找回丢失的时间维度,MIT这项新研究简直像魔术
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在拍照时我们常常会遇到这样的苦恼:由于设置的快门时间太长,快速运动的物体会在身后产生严重的拖影. 除非是为了特殊的艺术效果,一般来说这张照片 ...
- git怎么操作会丢失自己的代码_git找回丢失的代码
多人开发时找回丢失的代码 1.先保证所有分支的代码都已经提交并拉取到最新状态. 2.最重要的是需要找到最近一条自己代码还存在的记录,然后复制到最近的更早一条的提交记录的id,比如e36e9e76da1 ...
最新文章
- 养猪场招研究生年薪18万起?!你怎么看?
- 按AI顶会评实力:美国7倍领先中国,谷歌雄霸全球第一,腾讯和清华分获中国产学No.1...
- 小派(PiMax)vr Artisan固件升级失败,没反应了
- Redis BitMap适应场景
- 卷积神经网络初探 | 数据科学家联盟 http://dataunion.org/20942.html
- 阿里神器 Arthas 有多强?教你一招定位线上Bug!
- ubuntu终端按ctrl+s就卡住怎么办?(按ctrl+q)(锁住)(锁屏)(暂停打印)
- VTK:Points之DensifyPoints
- win10 子系统 ubuntu 16.04 安装 docker
- linux6.6 sudo环境变量,linux sudo环境变量设置
- Asynchronous(异步处理-Promise)
- 这下终于可以方便地发表测试型网页代码了(附源码下载)
- 联想台式主机拆机教程_联想发布全新刃9000台式主机:搭载英伟达最新显卡+8999元...
- 推荐系统思维导图——第二章
- 实战 - Nexus搭建Maven私服
- c语言中常用数学符号,C语言入门知识:运算符
- 5.16 图层合并的几种方式 [原创Ps教程]
- “Your Firefox profile cannot be loaded. It may be missing or inaccessible.“
- 修改build.prop文件,可更改新浪微博尾巴显示
- python实现百度语音合成(超详细!!)
热门文章
- JIL 编译与 AOT 编译
- Debian7 apt源设置
- 一个入门的学生选课系统
- chrome 网页重新加载_在Chrome中为各个网页设置自定义重新加载时间
- 关于vue父子组件之间事件触发及数据传递问题
- Oracle 12C CDB、PDB常用管理命令
- ORACLE 11G DATA GUARD主从切换
- OC之非ARC环境下循环retain问题
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)...
- Eclipse Java注释模板设置详解