Откуда мой проект должен включать new.h? (Visual Studio и / или SDK повреждены или несовместимы версии?) - PullRequest
0 голосов
/ 18 июня 2020

У меня есть проект, который начинался как проект Visual Studio 2005, а теперь является проектом Visual Studio 2019. Он построен с использованием 142 Platform Toolset на Windows 10, но для развертывания на Windows 8.1 и новее. Таким образом, он выбирает Windows 8.1 SDK и устанавливает для WINVER, _WIN32_WINNT и _WIN32_ WINDOWS все значения 0x0603.

Это проект MF C, поэтому stdafx.h практически везде. Это включает afxwin.h, которое, в свою очередь, включает afx.h, а это включает new.h. Все это отлично работает на моем настольном компьютере разработчика с версией 16.4.3 сообщества Visual Studio 2019.

Я только что попытался собрать проект на ноутбуке сразу после обновления до «последней» версии 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.

Я не понимаю, есть ли у меня (а) плохой проект (б) 1 или более плохих Visual Studio установок (c) 1 или несколько неверных установок SDK. Где я должен ожидать найти new.h при таких обстоятельствах, и проливает ли это свет на то, что из a, b или c я испытываю?

1 Ответ

0 голосов
/ 18 июня 2020

Случай (d): вам не хватает установки Windows SDK 8.1 на ноутбуке. Это нужно делать отдельно от установки VS. Из примечаний к выпуску Visual Studio 2019 v16.0 - Устаревшие возможности :

Windows 8.1 SDK больше не доступен в установщике Visual Studio. Обновите свои проекты C ++ до последней версии Windows 10 SDK . Если у вас жесткая зависимость от 8.1 , , вы можете загрузить его из Windows архива SDK .


[ EDIT ] При выборе Windows SDK 8.1 не удаляются все ссылки на Windows 10 SDK, который по-прежнему требуется и используется. Например, путь включения для проекта C ++ MF C с использованием набора инструментов v142 и SDK v8.1 на моем компьютере по умолчанию установлен следующим образом:
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
...