首页 > 解决方案 > 我的项目应该从哪里包含 new.h?(Visual Studio 和/或 SDK 损坏或版本不兼容?)

问题描述

我有一个项目,最初是 Visual Studio 2005 项目,现在是 Visual Studio 2019 项目。它是在 Windows 10 上使用 142 平台工具集构建的,但用于在 Windows 8.1 及更高版本上部署。因此它选择 Windows 8.1 SDK,并将 WINVER、_WIN32_WINNT 和 _WIN32_WINDOWS 全部设置为 0x0603。

这是一个 MFC 项目,stdafx.h几乎无处不在。那包括afxwin.h,这又包括afx.h,那包括new.h。这一切都可以在我的桌面开发机器上使用 Visual Studio 2019 社区版本 16.4.3 构建。

在升级到“最新”Visual Studio 版本(16.6.2)之后,我刚刚尝试在笔记本电脑上构建项目。它无法构建,因为它找不到new.h. 据我所知,new.h应该是SDK的一部分。但new.h不在 Windows 8.1 SDK 中(或者至少:不是我的)。

但真正让我困惑的是,当我在成功构建中进行追踪时new.h,也配置为使用 Windows 8.1 SDK,它new.h在 Windows 10 SDK 中找到。

我不清楚我是否有 (a) 一个坏项目 (b) 1 个或多个坏的 Visual Studio 安装 (c) 1 个或多个坏的 SDK 安装。在这种情况下,我应该在哪里找到new.h,这是否能说明我正在经历的 a、b 或 c 中的哪一个?

标签: c++visual-studiomfc

解决方案


案例 (d):您缺少笔记本电脑上的 Windows SDK 8.1 安装。这需要与 VS 安装分开完成。从 Visual Studio 2019 v16.0 发行说明 -弃用

Visual Studio 安装程序中不再提供 Windows 8.1 SDK。请将您的 C++ 项目升级到最新的 Windows 10 SDK如果您对 8.1 有硬性依赖您可以从Windows SDK 存档下载它。


[编辑] 以 Windows SDK 8.1 为目标并不会删除对 Windows 10 SDK 的所有引用,这仍然是必需和使用的。例如,使用 v142 工具集和 v8.1 SDK 的 C++ MFC 项目的包含路径在我的机器上默认设置为以下。

C:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.25.28610\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.25.28610\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Auxiliary\VS\UnitTest\include
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
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.7.2\Include\um

推荐阅读