Build fails with il2cpp

I’m using Unity 2018.4.12f and I’m getting this error message when trying to build my project with il2cpp:

Failed running C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile="unityaot" --compile-cpp --libil2cpp-static --platform="WindowsDesktop" --architecture="x64" --configuration="Release" --outputpath="D:\UnityProjects\TestProject 2018.4\Temp/StagingArea/Data\Native\GameAssembly.dll" --cachedirectory="D:\UnityProjects\TestProject 2018.4\Assets\..\Library/il2cpp_cache" --map-file-parser="C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\Tools\MapFileParser\MapFileParser.exe" --directory="D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\Managed" --generatedcppdir="D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\il2cppOutput"

stdout:
Building GameAssembly.dll with MsvcDesktopToolChain
    Msvc Install Version: 15.0
    Msvc Install SDK Directory: C:\Program Files (x86)\Windows Kits\10
    Msvc Linker Path: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\link.exe
    Msvc Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe

    Output directory: D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\Native
    Cache directory: D:\UnityProjects\TestProject 2018.4\Library\il2cpp_cache
il2cpp.exe didn't catch exception: Unity.IL2CPP.Building.BuilderFailedException: Il2CppTypeDefinitions.cpp
C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp\libil2cpp\il2cpp-config.h(3): fatal error C1083: Cannot open include file: 'assert.h': No such file or directory

Invocation was: Executable: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe"
Arguments: "D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\il2cppOutput\Il2CppTypeDefinitions.cpp" /nologo /c /bigobj /W3 /Zi /EHs /GR- /Gy /wd4102 /wd4800 /wd4056 /wd4190 /wd4723 /wd4467 /wd4503 /wd4996 /Ox /Oi /Oy- /GS- /Gw /GF /Zo /MT /DNET_4_0 /DUNITY_AOT /DGC_NOT_DLL /DRUNTIME_IL2CPP /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_NDEBUG /DNDEBUG /DWINDOWS_SDK_BUILD_VERSION=17763 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP /I"C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp\libil2cpp" /I"C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp\external\boehmgc\include" /I"D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\il2cppOutput" /I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\winrt" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt" /Fo"D:\UnityProjects\TestProject 2018.4\Library\il2cpp_cache\9540D23577F2701359CE6B0817A06025.obj" /Fd"D:\UnityProjects\TestProject 2018.4\Library\il2cpp_cache\9540D23577F2701359CE6B0817A06025.pdb"
EnvArg key: PATH value: C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64

   at Unity.IL2CPP.Building.CppProgramBuilder.BuildAllCppFiles(IEnumerable`1 sourceFilesToCompile, IBuildStatisticsCollector statisticsCollector)
   at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   at il2cpp.Program.DoRun(String[] args)
   at il2cpp.Program.Run(String[] args)
   at il2cpp.Program.Main(String[] args)
stderr:

Unhandled Exception: Unity.IL2CPP.Building.BuilderFailedException: Il2CppTypeDefinitions.cpp
C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp\libil2cpp\il2cpp-config.h(3): fatal error C1083: Cannot open include file: 'assert.h': No such file or directory

Invocation was: Executable: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe"
Arguments: "D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\il2cppOutput\Il2CppTypeDefinitions.cpp" /nologo /c /bigobj /W3 /Zi /EHs /GR- /Gy /wd4102 /wd4800 /wd4056 /wd4190 /wd4723 /wd4467 /wd4503 /wd4996 /Ox /Oi /Oy- /GS- /Gw /GF /Zo /MT /DNET_4_0 /DUNITY_AOT /DGC_NOT_DLL /DRUNTIME_IL2CPP /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_NDEBUG /DNDEBUG /DWINDOWS_SDK_BUILD_VERSION=17763 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP /I"C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp\libil2cpp" /I"C:\Program Files\Unity\Hub\Editor\2018.4.12f1\Editor\Data\il2cpp\external\boehmgc\include" /I"D:\UnityProjects\TestProject 2018.4\Temp\StagingArea\Data\il2cppOutput" /I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\winrt" /I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt" /Fo"D:\UnityProjects\TestProject 2018.4\Library\il2cpp_cache\9540D23577F2701359CE6B0817A06025.obj" /Fd"D:\UnityProjects\TestProject 2018.4\Library\il2cpp_cache\9540D23577F2701359CE6B0817A06025.pdb"
EnvArg key: PATH value: C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64

   at Unity.IL2CPP.Building.CppProgramBuilder.BuildAllCppFiles(IEnumerable`1 sourceFilesToCompile, IBuildStatisticsCollector statisticsCollector)
   at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   at il2cpp.Program.DoRun(String[] args)
   at il2cpp.Program.Run(String[] args)
   at il2cpp.Program.Main(String[] args)

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunProgram(Program, String, String, String, CompilerOutputParserBase) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:128)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:73)
UnityEditorInternal.IL2CPPBuilder:RunIl2CppWithArguments(List`1, Action`1, String) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:370)
UnityEditorInternal.IL2CPPBuilder:ConvertPlayerDlltoCpp(String, String, String, Boolean) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:351)
UnityEditorInternal.IL2CPPBuilder:Run() (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:211)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:42)
DesktopStandalonePostProcessor:SetupStagingArea(BuildPostProcessArgs, HashSet`1) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:245)
DesktopStandalonePostProcessor:PostProcess(BuildPostProcessArgs) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:46)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

The culprit seems to be “Cannot open include file: ‘assert.h’: No such file or directory”.

When searching the web, people have suggested installing this or that component for Visual Studio, but none of them have made any difference in the end.

I’ve tried uninstalling and reinstalling Visual Studio through Unity hub but to no avail.

Any ideas?

It seems like a clean project won’t build either. Not even in Unity 2018.4.9f which I’m 100% positive has worked before.

Recently I installed Visual Studio 2019, but upon encountering this issue with IL2CPP I uninstalled it and installed Visual Studio 2017. However, since IL2CPP still doesn’t work, my hypothesis is that the Visual Studio 2019 installation somehow messed it up, and somehow still interferes with it in Visual Studio 2017.

Maybe some files littering somewhere or path variables messing with the compilation?

After restarting my PC, I started getting another error message stating C++ compilers were missing and that I need to install them. So I did that and now it works fine.

It would be good if packages required to build apps with IL2CPP were installed together with Visual Studio when installing it through Unity when IL2CPP is checked. :shrug: