我的项目应该从哪里包含 new.h? (Visual Studio and/or SDK 损坏或版本不兼容?)
Where should my project include new.h from? (Visual Studio and/or SDK corruption or version incompatibility?)
我有一个项目,从 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 Community。
升级到 "the latest" Visual Studio 版本 (16.6.2) 后,我刚刚尝试在笔记本电脑上构建项目。它无法构建,因为它找不到 new.h
。据我所知,new.h
应该是 SDK 的一部分。但是 new.h
不在 Windows 8.1 SDK 中(或者至少:不是我的)。
但真正让我感到困惑的是,当我在成功构建(也配置为使用 Windows 8.1 SDK)中找到 new.h
时,它在 Windows 10 个 SDK。
我不清楚我是否有 (a) 一个错误的项目 (b) 1 个或更多错误的 Visual Studio 安装 (c) 1 个或更多错误的 SDK 安装。在这种情况下,我应该在哪里找到 new.h
,这是否能说明我正在经历 a、b 或 c 中的哪一个?
案例 (d):您缺少 Windows SDK 8.1 在笔记本电脑上的安装。这需要与 VS 安装分开完成。来自 Visual Studio 2019 v16.0 发行说明 - Deprecations:
The Windows 8.1 SDK is no longer available in the Visual Studio installer. Please upgrade your C++ projects to the latest Windows 10 SDK. If you have a hard dependency on 8.1, you can download it from the Windows SDK archive.
[ EDIT ] 针对 Windows SDK 8.1 not 删除所有对 Windows 10 SDK 的引用,它仍然是需要和使用。例如,使用 v142 工具集和 v8.1 SDK 的 C++ MFC 项目的包含路径在我的机器上默认设置为以下内容。
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Tools\MSVC.25.28610\include
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Tools\MSVC.25.28610\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Auxiliary\VS\UnitTest\include
C:\Program Files (x86)\Windows Kits.1\Include\um
C:\Program Files (x86)\Windows Kits.1\Include\shared
C:\Program Files (x86)\Windows Kits.1\Include\winrt
C:\Program Files (x86)\Windows Kits\NETFXSDK.7.2\Include\um
我有一个项目,从 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 Community。
升级到 "the latest" Visual Studio 版本 (16.6.2) 后,我刚刚尝试在笔记本电脑上构建项目。它无法构建,因为它找不到 new.h
。据我所知,new.h
应该是 SDK 的一部分。但是 new.h
不在 Windows 8.1 SDK 中(或者至少:不是我的)。
但真正让我感到困惑的是,当我在成功构建(也配置为使用 Windows 8.1 SDK)中找到 new.h
时,它在 Windows 10 个 SDK。
我不清楚我是否有 (a) 一个错误的项目 (b) 1 个或更多错误的 Visual Studio 安装 (c) 1 个或更多错误的 SDK 安装。在这种情况下,我应该在哪里找到 new.h
,这是否能说明我正在经历 a、b 或 c 中的哪一个?
案例 (d):您缺少 Windows SDK 8.1 在笔记本电脑上的安装。这需要与 VS 安装分开完成。来自 Visual Studio 2019 v16.0 发行说明 - Deprecations:
The Windows 8.1 SDK is no longer available in the Visual Studio installer. Please upgrade your C++ projects to the latest Windows 10 SDK. If you have a hard dependency on 8.1, you can download it from the Windows SDK archive.
[ EDIT ] 针对 Windows SDK 8.1 not 删除所有对 Windows 10 SDK 的引用,它仍然是需要和使用。例如,使用 v142 工具集和 v8.1 SDK 的 C++ MFC 项目的包含路径在我的机器上默认设置为以下内容。
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Tools\MSVC.25.28610\include
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Tools\MSVC.25.28610\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Auxiliary\VS\UnitTest\include
C:\Program Files (x86)\Windows Kits.1\Include\um
C:\Program Files (x86)\Windows Kits.1\Include\shared
C:\Program Files (x86)\Windows Kits.1\Include\winrt
C:\Program Files (x86)\Windows Kits\NETFXSDK.7.2\Include\um