Unity UWP项目Xbox构建失败:IL2CPP编译报错求助
Unity IL2CPP构建UWP项目失败(退出代码4)解决方案
环境信息
- Unity版本:2022.1.22f1
- Visual Studio版本:2019 16.11.22
问题现象
将Unity项目通过IL2CPP构建为UWP项目时,在Unity构建环节直接失败,未进入Visual Studio部署阶段。错误核心表现为il2cpp.exe执行编译命令时退出代码4,调用VS的cl.exe编译Lump_libil2cpp_vm.cpp文件时出错。
构建输出日志(中文翻译版)
1> 1>调用信息:可执行文件: "D:\Visual studio\Community 2022\VC\Tools\MSVC\14.34.31933\bin\HostX64\x64\cl.exe" 1>参数: "D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\Source\lumpedcpp\Lump_libil2cpp_vm.cpp" /nologo /c /bigobj /W3 /Z7 /EHs /GR- /Gy /utf-8 /wd4102 /wd4800 /wd4056 /wd4190 /wd4723 /wd4467 /wd4503 /wd4996 /wd4200 /wd4834 /wd4722 /Od /Zc:inline /RTC1 /MDd /DWINDOWS_UWP /DUNITY_UWP /DUNITY_WSA_10_0 /DUNITY_WSA /DUNITY_WINRT /DPLATFORM_WINRT /DNET_4_0 /DUNITY_AOT /DIL2CPP_MONO_DEBUGGER_DISABLED /DGC_NOT_DLL /DRUNTIME_IL2CPP /DIL2CPP_ENABLE_WRITE_BARRIERS=1 /DIL2CPP_INCREMENTAL_TIME_SLICE=3 /DIL2CPP_DEBUG=1 /DBASELIB_INLINE_NAMESPACE=il2cpp_baselib /DIL2CPP_DEFAULT_DATA_DIR_PATH=Data/il2cpp_data /DBASELIB_USE_DYNAMICLIBRARY=1 /D_WIN32 /DWIN32 /DWIN32_THREADS /D_WINDOWS /DWINDOWS /D_UNICODE /DUNICODE /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS /D_WINSOCK_DEPRECATED_NO_WARNINGS /DNOMINMAX /D_DEBUG /DDEBUG /DIL2CPP_DEBUG=1 /DWINDOWS_SDK_BUILD_VERSION=22621 /D__WRL_NO_DEFAULT_LIB__ /DWINAPI_FAMILY=WINAPI_FAMILY_APP /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\libil2cpp" /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\libil2cpp" /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\external\bdwgc\include" /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\external\xxHash" /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\external\baselib\Include" /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\external\baselib\Platforms\UniversalWindows\Include" /I"D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\IL2CPP\libil2cpp\pch" /I"D:\Visual studio\Community 2022\VC\Tools\MSVC\14.34.31933\include" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt" /Fo"D:\Unity\MiningGame\Builds\UWP\1.0\build\obj\il2cppOutputProject\x64\Debug\libil2cpp\11A0BDF31787E9DFF371F2BC88A6BFA5.obj" /Fd"D:\Unity\MiningGame\Builds\UWP\1.0\build\obj\il2cppOutputProject\x64\Debug\libil2cpp\11A0BDF31787E9DFF371F2BC88A6BFA5.pdb" 1>环境变量PATH: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86;C:\Program Files (x86)\Windows Kits\10\bin\x86;D:\Visual studio\Community 2022\VC\Tools\MSVC\14.34.31933\bin\HostX64\x64 1> 1> 在 Unity.IL2CPP.Building.CppProgramBuilder.BuildAllCppFiles(IEnumerable`1 sourceFilesToCompile, IBuildStatisticsCollector statisticsCollector) 1> 在 Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics) 1> 在 il2cpp.Compilation.CompilationDriver.Run(RuntimePlatform platform, Il2CppCommandLineArguments il2CppCommandLineArguments, BuildingOptions buildingOptions, ReadOnlyCollection`1 matchedAssemblyMethodSourceFiles) 1> 在 il2cpp.Program.DoRun(String[] args, RuntimePlatform platform, Il2CppCommandLineArguments il2CppCommandLineArguments, BuildingOptions buildingOptions, Boolean throwExceptions) 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): 错误 MSB3073: 命令 ""D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\\IL2CPP\build\deploy\il2cpp.exe" --libil2cpp-static --compile-cpp -architecture=x64 -configuration=Debug -platform=WinRT -outputpath="D:\Unity\MiningGame\Builds\UWP\1.0\\build\bin\x64\Debug\GameAssembly.dll" --data-folder="D:\Unity\MiningGame\Builds\UWP\1.0\\build\bin\x64\Debug\\" -cachedirectory="D:\Unity\MiningGame\Builds\UWP\1.0\\build\obj\il2cppOutputProject\x64\Debug\\" -generatedcppdir="D:\Unity\MiningGame\Builds\UWP\1.0\Il2CppOutputProject\\Source" --incremental-g-c-time-slice=3 --baselib-directory="D:\Unity\Editor\2022.1.22f1\Editor\Data\PlaybackEngines\MetroSupport\Players\UAP\il2cpp\x64\Debug" --avoid-dynamic-library-copy --dont-deploy-baselib --profiler-report --additional-defines=WINDOWS_UWP --additional-defines=UNITY_UWP --additional-defines=UNITY_WSA_10_0 --additional-defines=UNITY_WSA --additional-defines=UNITY_WINRT --additional-defines=PLATFORM_WINRT -dotnetprofile=unityaot-win32 -verbose --relative-data-path=Data/il2cpp_data" 已退出,代码为 4。
解决步骤
修复VS版本关联冲突
日志显示Unity误调用了VS2022的编译工具链,但实际安装的是VS2019。打开Unity的「编辑 > 偏好设置 > 外部工具」,将「Visual Studio编辑器」指定为VS2019 16.11.22,确保工具链版本匹配。清理缓存与构建文件
删除项目Builds下的UWP构建目录(D:\Unity\MiningGame\Builds\UWP\1.0),以及Unity项目根目录的Library/il2cpp_cache文件夹,彻底清理后重新构建,避免缓存导致的编译异常。调整Windows SDK版本
VS2019对Win11 SDK(22621)兼容性不佳,建议安装并使用Win10 SDK 10.0.19041.0:- 打开VS2019安装器,修改安装内容,勾选「Windows 10 SDK (10.0.19041.0)」,卸载过高版本的SDK。
- 在Unity的「Player设置 > 其他设置 > 配置」中,将「Windows SDK版本」设置为「随Visual Studio安装」。
检查IL2CPP构建参数
确认Unity Player设置:- 「脚本后端」选择IL2CPP
- 「目标架构」为x64
- 临时关闭「增量GC」选项,重新尝试构建。
内容的提问来源于stack exchange,提问作者Nathaniel Stauffer
相关产品推荐
相关产品推荐

