Visual Studio SDK的一个问题排查
1. Visual Studio 和 Visual Studio Build Tools
Visual Studio 说的是一个 IDE,通常用图形界面去用它。
Visual Studio Build Tools 说的是只包含命令行工具和其它必要文件(库、头文件等)的一个工具。
Walkthrough: Compiling a Native C++ Program on the Command Line
2. Visual Studio 和 Windows SDK 版本关系
在尝试移植编译 pycocotools 到 win10 系统时,我使用 VS2017, 发现提示报错 “io.h找不到” 。仔细看了构建命令,发现找错了头文件搜索目录:在C:\Program Files (x86)\Windows Kits\10\Include
目录下,分别有17763和18362两本版本的 Win10 SDK 的目录;在 Visual Studio Installer 里找了一番,VS2019 里才有 18362 , VS2017里没有它(可能是之前vs2019没卸载干净)
这导致了 pycocotools 的编译输出信息中,头文件被“一通乱找”,原本应该是:
-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt
被弄成了:
-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt
而 ucrt 目录下确实有我们需要的 "io.h" 文件:
尝试在 Visual Studio Installer 中安装了VS2019,并且选择了 18362, 确实会增加安装ucrt等目录;但是卸载VS2019的话,ucrt等新增目录会被删掉,而原来就有的几个目录巍然不动:
于是到控制面板搜索"Windows",找到了Windows Driver Kit,没错这货就是Win 10 SDK,版本是 18362,卸载它: