Visual Studio 2022:无法打开包含文件:“ctype.h”

Al *_*epp 6 msbuild winapi visual-studio-2022

我在 C++ 构建中收到臭名昭著的错误消息:“无法打开包含文件:'ctype.h'”。我知道类似的问题已经被问过多次,但我的情况似乎有所不同,因为我使用的是最新的 Visual Studio 2022 并且似乎表现不同。

我有一堆现有的 C++ 项目,它们使用带有 DirectX 6 的普通 32 位 Windows API,并且我使用 VC++ 构建工具 2015 和 Windows SDK 8.1 来编译它,在以前版本的 Visual Studio 中没有任何问题。Visual Studio 2019 中一切正常,不需要特殊设置,直到我卸载它并安装 Visual Studio 2022。

现在我可以打开我的解决方案,它很好地显示它们正在使用 C++ 构建工具 2015,我将其与 VS2022 一起安装,并且解决方案还正确显示它们使用 Windows 8.1 SDK。但是VS2022安装中不存在Windows 8.1 SDK,我单独安装了它。我还尝试“修复”VS2022 安装,但这只是删除了我所有的 UI 首选项,但没有修复 build.gradle 中的任何内容。另外,我尝试重新安装Windows 8.1 SDK,但它说已经可以了。

在此输入图像描述

当查看 Visual Studio 时,我看不到任何可以设置默认包含和 lib 目录的地方,我只能列出现在正在使用的内容。VS2022 显示了这个列表:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include
C:\Program Files\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt
Run Code Online (Sandbox Code Playgroud)

我收到的实际错误消息是这样的:

c:\program files (x86)\windows kits\8.1\include\um\winnt.h(31): fatal error C1083: Cannot open include file: 'ctype.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以它说winnt.h从 Windows 套件 8.1 找不到ctype.h. 是的,该文件夹或周围的任何地方都没有ctype.h,我只能在C:\Program Files\Microsoft Visual Studio\2022\Professional\SDK\ScopeCppSDK\vc15\SDK\include\ucrt,我只能在 我认为是包含 VC++ 2015 构建工具的文件夹所以这似乎是正确的,但我想知道为什么在项目设置中设置 VC++ 2015 构建工具时该文件夹不是默认包含目录的一部分。因为 VS2022 似乎正确选择了我的 Windows 8.1 SDK,但没有正确选择较旧的 C++ 编译器。

当我尝试添加 ctype.h 所在的文件夹以包含文件夹时,我收到另一种类型的错误,指出其他文件与这些包含文件不兼容。当然,这个目录系统需要同步。那么请问正确的使用方法是什么?

另外,我尝试将 VC++ 构建工具切换到 2022 版本。不幸的是,这也不能解决问题。而且Windows 10 SDK没有安装,该软件想要与旧版Windows保持兼容,所以我不需要它。

Al *_*epp 3

我发现了一个相关的错误报告:https://developercommunity.visualstudio.com/t/windows-81-sdk-1/151682

尽管微软员工拒绝接受这是一个错误,但它也发生在我身上。当我仅安装Windows 8.1 SDK时,无法使用它编译任何项目。我什至尝试在VS2022中创建一个新的Windows API项目,该项目已创建,但无法编译并出现相同的错误。

因此,我尝试安装 Windows 10 SDK(从 VS2022 安装,但这可能并不重要),这添加了一些丢失的文件,这些文件现在有助于编译 Windows 8.1 SDK 项目。问题似乎已经解决,我的旧 C++ 代码现在可以使用 Windows 8.1 SDK 以及 C++ 构建工具 2015 和 2022 进行编译。

  • 就我而言,安装 Windows 8.1 SDK 并转到 Visual Studio 安装程序来安装 Windows 10 SDK 是不够的。我尝试使用 VS Installer 安装一堆东西,但当我从“独立组件”安装 Windows Universal CRT SDK 时,问题终于得到解决。这添加了文件夹“C:\ Program Files(x86)\ Windows Kits \ 10 \ Include \ 10.0.10240.0 \ ucrt”,该文件夹在项目的“VC ++目录/包含目录”中引用 (3认同)