UE5.3项目C++编译失败问题求助
UE5.3创建C项目/添加C代码编译失败问题排查
问题描述
尝试创建C版Unreal Engine 5.3项目,或在蓝图项目中添加C代码时,均出现编译失败,具体编译日志如下:
The project could not be compiled. Would you like to open it in Visual Studio 2022? Running C:/Program Files/UE_5.3/Engine/Build/BatchFiles/Build.bat Development Win64 -Project="E:/files/Unreal Projects/MyProject5/MyProject5.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE Using bundled DotNet SDK version: 6.0.302 Running UnrealBuildTool: dotnet "../../Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.dll" Development Win64 -Project="E:/files/Unreal Projects/MyProject5/MyProject5.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE Log file: C:\Users\pietr\AppData\Local\UnrealBuildTool\Log.txt Creating makefile for MyProject5Editor (no existing makefile) @progress push 5% Parsing headers for MyProject5Editor Running Internal UnrealHeaderTool "E:\files\Unreal Projects\MyProject5\MyProject5.uproject" "E:\files\Unreal Projects\MyProject5\Intermediate\Build\Win64\MyProject5Editor\Development\MyProject5Editor.uhtmanifest" -WarningsAsErrors -installed Total of 0 written Reflection code generated for MyProject5Editor in 1.49836 seconds @progress pop Building MyProject5Editor... Using Visual Studio 2022 14.39.33522 toolchain (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519) and Windows 10.0.18362.0 SDK (C:\Program Files (x86)\Windows Kits\10). Determining max actions to execute in parallel (4 physical cores, 8 logical cores) Executing up to 4 processes, one per physical core Requested 1.5 GB memory per action, 2.99 GB available: limiting max parallel actions to 1 ------ Building 6 action(s) started ------ [1/6] Compile [x64] SharedPCH.Engine.Cpp20.cpp C:\Program Files\UE_5.3\Engine\Source\predefined C++ types (compiler internal)(420): error C2248: 'FHazardPointerCollection::FHazardRecord::FHazardRecord': impossibile accedere a private membro dichiarato nella classe 'FHazardPointerCollection::FHazardRecord' C:\Program Files\UE_5.3\Engine\Source\Runtime\Core\Public\Experimental\Containers\HazardPointer.h(86): note: vedere la dichiarazione di 'FHazardPointerCollection::FHazardRecord::FHazardRecord' C:\Program Files\UE_5.3\Engine\Source\Runtime\Core\Public\Experimental\Containers\HazardPointer.h(77): note: vedere la dichiarazione di 'FHazardPointerCollection::FHazardRecord' C:\Program Files\UE_5.3\Engine\Source\predefined C++ types (compiler internal)(420): note: il contesto di creazione dell'istanza del modello (prima il meno recente) ? C:\Program Files\UE_5.3\Engine\Source\Runtime\Core\Public\Experimental\Containers\HazardPointer.h(133): note: vedere il riferimento all'istanza 'void __builtin_array_init_helper<FHazardPointerCollection::FHazardRecord>(_T *,size_t) noexcept(<expr>)' della funzione modello di cui ? in corso la compilazione with [ _T=FHazardPointerCollection::FHazardRecord ] [2/6] Resource Default.rc2 Total time in Parallel executor: 16.25 seconds Total execution time: 20.99 seconds
问题原因
这是Visual Studio 2022 17.9版本(对应MSVC工具链14.39.33519)与UE5.3的兼容性bug:编译器内置的__builtin_array_init_helper函数在初始化数组时,错误地尝试访问FHazardPointerCollection::FHazardRecord的私有构造函数,触发了C2248访问权限错误。
解决方案
- 升级Visual Studio 2022到最新版本:微软在后续的VS更新中修复了该编译器内置函数的问题,更新后即可正常编译。
- 临时降级VS版本:如果暂时无法升级,可以降级到Visual Studio 2022 17.8及以下版本,该版本与UE5.3的兼容性更稳定。
- 确认项目C标准设置:确保项目的C标准为C20(UE5.3默认配置,可通过「项目设置->C->C++标准」检查确认)。
内容的提问来源于stack exchange,提问作者pietro bertipaglia
相关产品推荐
相关产品推荐

