新安装visual studio 2022后,在一个简单工程上编译测试中,遇到标准头文件(new.h)报错,详情如下:

已启动生成…
1>------ 已启动生成: 项目: MFCApplication1, 配置: Debug x64 ------
1>pch.cpp
1>D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\atlmfc\include\afx.h(62,11): 
fatal error C1083: 无法打开包括文件: “new.h”: No such file or directory
1>已完成生成项目“MFCApplication1.vcxproj”的操作 - 失败。

经验证和对比visual studio 2019,发现visual studio 2022以下sdk路径有一个明显差异。详情如下所示。

visual studio 2019 安装后的默认路径如下

而 visual studio 2022路径如下

库目录也一样不同,visual studio 2019如下所示

 而visual studio 2022如下所示。

在电脑上查看,visual studio 2022中所描述的目录实际并不存在。真正存在的目录和visual studio 2019相同。要解决编译错误,可以有以下的解决办法。

第一种方法(推荐

vs2022的安装路径

C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Microsoft\VC\v170\

有一个 Microsoft.Cpp.WindowsSDK.props 文件,其中描述了 KitsRoot10 注册表项。

参考下面所描述,可将visual studio 2022中的描述项修改为和visual studio 2019相同。

Microsoft.Cpp.WindowsSDK.props 其中这两行描述了sdk的注册表值

<UniversalCRTSdkDir_10 Condition="'$(UniversalCRTSdkDir_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots@KitsRoot10)</UniversalCRTSdkDir_10>
<UniversalCRTSdkDir_10 Condition="'$(UniversalCRTSdkDir_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots@KitsRoot10)</UniversalCRTSdkDir_10>

通过注册表 命令regedit 进入下面界面,修改KitsRoot10属性值为如图所示。然后重启VS2022既可。

第二种方法

按visual studio 2022所描述的路径,手动创建好对应两个目录

C:\Program Files\Windows Kits\10\Include\10.0.19041.0\ucrt

C:\Program Files\Windows Kits\10\lib\10.0.19041.0\ucrt\x64

然后将

C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt

C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64

对应全部文件复制过去

第三种方法

分别将实际存在的两个目录加载到项目配置中;

C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt

C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64

如图所示

希望这几个方法对读者有帮助。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐