Visual Studio编译C++项目时误报D8037错误的排查求助
构建C++项目时cl.exe报错D8037的排查与临时解决
构建Visual Studio C++项目解决方案时,机器触发以下错误:
Error executing C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64\cl.exe (tool returned code: 2) [106/749] Compile [x64] cl : Command line error D8037 : cannot create temporary il file; clean temp directory of old il files (0:00.09 at +0:00)
官方提示需清理临时目录中的旧IL文件,但实际情况不符:%TMP%文件夹中无此类文件,且磁盘空间充足。该机器为全新Windows 11安装,仅配置用于此项目构建,同配置的其他机器可正常编译。已验证%TMP%环境变量指向AppData下存在的文件夹,权限充足,其他环境变量配置均正确。
进程监视器(ProcMon)监测结果
执行构建时通过ProcMon监测发现:msvcp140.dll调用的CreateFileMapping操作返回“FILE LOCKED WITH ONLY READERS”信息,无其他补充内容。
临时可行解决方案
以管理员身份运行cl.exe
将cl.exe设置为“以管理员身份运行”可完成构建,但会触发大量UAC提示,并非可行方案;禁用UAC虽能完成构建,但每个使用cl.exe构建的模块都会生成新的命令提示符窗口,也不适用。
使用Run Build Insights构建
通过Visual Studio中的“Run Build Insights”重建选项可正常完成构建,后续构建也无问题,但项目需无需绕过方式即可正常构建,因此该方案不可行。
结论
所有迹象指向权限问题:cl.exe因某种原因无法写入系统%TMP%文件夹。Run Build Insights的临时方案也佐证了这一点——该构建方式会实例化独立的开发环境和临时文件夹。
内容的提问来源于stack exchange,提问作者1fbc1c75
相关产品推荐
相关产品推荐

