帮VS2019 找回丢失的 SDK问题

缘起

前一段时间,有网友遇到一个奇怪的问题,说他机器上的 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 快速解决问题的关键在于过滤出与问题有关的事件!

我们需要根据什么条件过滤呢?

一般操作结果是成功的事件对我们帮助不大,所以首先过滤掉 ResultSUCCESS 的事件。

既然提示的是找不到 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 。看来,应该是我本地少了这个文件。因为我故意把这个文件重名了,改回来,重新编译,搞定。

具体调查过程请参考下面的屏幕录像。

troubleshoot-missing-sdk-10.0.18362.0-screen-record 后记

跟这位网友沟通的整个过程特别顺畅,省心。他已经根据线索在网上搜索了相关资料,自己摸索了一番。怀疑哪里有问题,立刻能查看相关的配置进行排查。最后,在沟通的过程中,他自己就把问题解决了。原来,他在前几天把一些文件的位置给改了,改回来就好了。后来聊天得知,他才大二,后生可畏!

总结

到此这篇关于帮VS2019 找回丢失的 SDK问题的文章就介绍到这了,更多相关vs2019 找回丢失的 SDK内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用vscode调试编译后的js代码详解

    前言 在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求. vscode 是一个非常棒的编辑器,内置功能强大的调试能力.经过简单的设定,就可以对 js 文件进行调试.但有时我们想要调试的内容是经过编译的,当然我们可以直接调试编译后的代码.但经过编译压缩以后的代码,可读性很差,且也可能无法分模块查看了,有什么方法进行编译前的代码调试么?答案当然是肯定的. 下面话不多说了,来一起看看详细的介绍吧. vscode 的常规调试 vscode 的调试界面在窗口最左边: 最

  • vscode怎么编译运行

    vscode 的调试功能其实提供了一键编译运行的功能(ctrl+F5),但是启动特别特别慢- 又不想安装插件,后来发现vscode 提供了一个叫做 Task 的功能,下面我就来介绍一下怎么使用Task功能实现C\C++的一键编译运行(Linux平台下,windows下自行修改).python, java以及其他语言都可以稍加修改实现类似的功能. 第一步:新建一个Task ctrl+shift+P启动全局控制台,输入configure task 选择使用模板创建task.json文件 之后选择最后

  • VScode编译C++ 头文件显示not found的问题

    一直用codeblocks,想试试vscode,结果这个问题给我弄懵逼了.一开始以为是iostream这个头文件not found,后来发现第一个头文件都会这样显示,放到后面就不会了,然而,光这一个显示not found(虽然并不影响编译),就能逼死强迫症的啊~~~ 言归正传,这个问题解决方法是: 文件--首选项--设置--搜索"clang.diagnostic.enable",然后把勾勾去掉就好了.这是插件C/C++ Clang Command Adapter的一个选项~~ 如果一堆

  • 使用VSCode和VS2017编译调试STM32程序的实现

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台(基于Java)的,比如STM32CubeMX,MCUFinder,STM32CubeProgrammer等.17年年底收购了truestudio的开发公司-Atollic.这个公司的IDE就是基于Eclipse使用GNU套装的. 官方都支持了,那我们有必要了解一下.要是好用,说不定就可以淘汰老旧的

  • 帮VS2019 找回丢失的 SDK问题

    缘起 前一段时间,有网友遇到一个奇怪的问题,说他机器上的 vs2019 编译 C++ 工程报错.我当时一听就有两个怀疑: 1.工程设置不对. 2.vs2019 没装好. 因为新建一个最简单的工程,编译也报一样的错误,所以可以排除工程设置的问题了.那只有可能是 vs2019 的问题了.但是具体是哪里的问题呢? 他按照错误提示搜索到了如下链接: https://developercommunity.visualstudio.com/content/problem/761788/msb8036-the

  • JavaWeb利用邮箱帮用户找回密码

    本文是介绍在一个小的JAVAWeb项目中,利用邮箱帮用户找回密码. 效果展示    需要一个发送邮件的jar包 : javax.mail .jar 1.JSP页面(设置邮箱输入框) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="

  • 密码破解全教程

    在日常的计算机操作中,我们随时随地都离不开密码--开机要使用CMOS密码.进Windows  98要使用用户密码.编辑Word文档要设置文档密码--,所有这些都为用户的数据安全提供了必要的安全保障!不过随着密码应用范围的增加,遗忘密码的情况也在与日俱增(谁也无法保证自己绝对不会忘记密码)!在忘记密码之后如何破解这些密码,尽可能减少损失就成为广大用户所关注的一个话题.为方便用户的使用,现将常用计算机密码的破解方法向大家作一简要介绍: 一.开机密码  根据用户设置的不同,开机密码一般分为两种不同情况

  • vue 项目如何引入微信sdk接口的方法

    做微信的网页基本上都要接入微信的sdk,我在做的时候,也颇费了一番功夫,然后就想记录一下,供自己日后翻阅,以及让有需要的朋友可以做一下参考,如果喜欢的可以点波赞,或者关注一下,希望可以帮到大家. 安装sdk npm install weixin-js-sdk --save 开始之前大家可以先读一读微信公众号的 接入文档,vue是单页面项目,比如你想要接入微信分享功能,分享功能在每个路由地址都要有,因为每个路由的url是不一样的,搜易就需要在每个路由地址都引入一遍. 整体步骤: vue引入sdk的

  • WINDOWS下搭建SVN服务器端的步骤分享(Subversion)

    1.获取svn程序 2.安装 Subversion(以下简称SVN)的服务器端和客户端.下载下来的服务器端是个 zip压缩包,直接解压缩即可,比如我解压到 E:\subversion .客户端安装文件是个 exe 可执行文件,直接运行按提示安装即可,客户端安装完成后提示重启. 3.先建立空目录 E:\svn\repos1 ,注意一定是要空的.然后在 repos1 文件夹上"右键->TortoiseSVN->Create Repository here...",然后可以选择版

  • Git 的基本操作、开发流程、实用技巧总结(陈彦贝)

    Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码. Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易懂,就不围绕这块展开了,有兴趣的可以去了解下. 开门见山,我们直接来说说 Git 有哪些常见的操作. Git 有哪些常规操作? 我们简单说说Git有哪些常规操作,能够让我们应付简单的开发需求. 克隆代码 ✦ 克隆远端代码 git clone http://git.code.oa.com/QCFE/sql

  • 浅谈react 同构之样式直出

    前言 上文讲到通过同构服务端渲染,可以直出html结构,虽然讲解了样式,图片等静态资源在服务端引入问题的解决方案,但是并没有实际进行相关操作,这篇文章就讲解一下如何让样式像html一样直出. PS: 直出,我的理解就是输入url发起get请求访问服务端,直接得到完整响应结果,而不是同过ajax异步去获取. React 同构的关键要素 完善的 Compponent 属性及生命周期与客户端的 render 时机是 React 同构的关键. DOM 的一致性 在前后端渲染相同的 Compponent,

  • 五种windows密码设置及破解

    在使用电脑的过程中,难免要与各类密码打交道,以下九种密码可能是大家用的最多的:BIOS密码.安装密码.用户密码.电源管理密码.屏保密码.开机密码.上网密码.分级审查密码和共享密码.今天,我们就谈谈这些和我们息息相关的密码,本篇文章先讲九大常用密码的前五种密码. 一.BIOS密码 BIOS(Basic Input Output System)即基本输入/输出系统,它实际上是被固化到计算机主板上的ROM芯片中的一组程序,为计算机提供最低级的.最直接的硬件控制.和其它程序不同的是,BIOS是储存在BI

  • XP系统优化和安全限制修改集合附注册表文件下载

    XP系统优化和安全限制\IE相关XP系统优化和安全限制\优化XP系统优化和安全限制\其他优化和一些小技巧附带的嘿嘿.txtXP系统优化和安全限制\恢复禁止和隐藏XP系统优化和安全限制\改名和图片XP系统优化和安全限制\琪琪说明文件.txtXP系统优化和安全限制\用NET入侵计算机.txtXP系统优化和安全限制\禁止XP系统优化和安全限制\隐藏XP系统优化和安全限制\IE相关\IE多线程下载.regXP系统优化和安全限制\IE相关\IE奥秘--添加新菜单项(推荐).txtXP系统优化和安全限制\I

  • 提升网络效率 宽带路由优化与使用技巧

    相信许多上网用户都会直接或间接地与宽带路由器"打交道",但在长期使用宽带路由器的过程中,人们很少会将目光瞄向它,即使在网络出现了各种访问故障时,人们也很少会认为网络故障与宽带路由器有关!事实上,宽带路由器与其他普通的网络连接设备一样,一旦我们对它设置不当或维护不妥的话,它也容易出现各种莫名其妙的故障,这些故障将会直接影响我们平时的上网效率.为了有效提升上网效率,本文下面就着眼宽 带路由,为各位提供一些管理和维护宽带路由器的经验技巧,希望这些内容能对大家有用!  正确连接,确保线路通畅

随机推荐