电商运营 网站运营,网页素材及网站架构制作,山东网站建设比较好,太原网站建设信息推荐缘起 前一段时间#xff0c;有网友遇到一个奇怪的问题#xff0c;说他机器上的 vs2019 编译 C 工程报错。我当时一听就有两个怀疑#xff1a;工程设置不对。vs2019 没装好。因为新建一个最简单的工程#xff0c;编译也报一样的错误#xff0c;所以可以排除工程设置的问题了… 缘起 前一段时间有网友遇到一个奇怪的问题说他机器上的 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如下图。工程 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 的记录。没想到效果这么好只有六条。其中有两条是注册表中找不到 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后记 跟这位网友沟通的整个过程特别顺畅省心。他已经根据线索在网上搜索了相关资料自己摸索了一番。怀疑哪里有问题立刻能查看相关的配置进行排查。最后在沟通的过程中他自己就把问题解决了。原来他在前几天把一些文件的位置给改了改回来就好了。后来聊天得知他才大二后生可畏总结 在帮网友解决问题的过程中我扮演的角色其实类似 “橡皮鸭”。也希望大家遇到问题时把问题描述给周围的人也许自己就知道问题出在哪了。屡试不爽猜你喜欢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事件修复程序功能异常欢迎留言交流需要你的