缘起
前一段时间,有网友遇到一个奇怪的问题,说他机器上的 vs2019
编译 C++
工程报错。我当时一听就有两个怀疑:
1.工程设置不对。
2.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
,如下图。
工程 SDK Version 配置
本地搜一下 10.0.18362.0
,看看本地是否存在相关的路径。
everything 搜索结果
本地也存在相关路径。能想到的可以怀疑的地方都排除了。接下来请出我们的老朋友 —— process monitor
。
深入调查
打开 process monitor
,开启监视,在 vs
中开始编译,问题重现后,停止监视。
下面就要进行最重要的步骤了—— 过滤。
使用 process monitor
快速解决问题的关键在于过滤出与问题有关的事件!
我们需要根据什么条件过滤呢?
一般操作结果是成功的事件对我们帮助不大,所以首先过滤掉 Result
是 SUCCESS
的事件。
既然提示的是找不到 10.0.18362.0
版本的 SDK
,相关错误应该和 10.0.18362.0
有关,所以只保留 Path
中包含 10.0.18362.0
的记录。
没想到,效果这么好,只有六条。
其中,有两条是注册表中找不到 HKLMSoftwareWOW6432NodeMicrosoftMicrosoft SDKsWindowsv10.0.18362.0
(这个注册表项不是必须存在的,在能正常编译的机器上也可能找不到),最后一条是找不到文件 C:Program Files (x86)Windows Kits10Include10.0.18362.0sharedsdkddkver.h
。看来,应该是我本地少了这个文件。因为我故意把这个文件重名了,改回来,重新编译,搞定。
具体调查过程请参考下面的屏幕录像。
troubleshoot-missing-sdk-10.0.18362.0-screen-record 后记
跟这位网友沟通的整个过程特别顺畅,省心。他已经根据线索在网上搜索了相关资料,自己摸索了一番。怀疑哪里有问题,立刻能查看相关的配置进行排查。最后,在沟通的过程中,他自己就把问题解决了。原来,他在前几天把一些文件的位置给改了,改回来就好了。后来聊天得知,他才大二,后生可畏!
总结
到此这篇关于帮VS2019 找回丢失的 SDK问题的文章就介绍到这了,更多相关vs2019 找回丢失的 SDK内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!
—-想了解帮VS2019 找回丢失的 SDK问题分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/484831.html