新安装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
如图所示
希望这几个方法对读者有帮助。