Even stuck at startup Unreal c++ new project make

Install newest Unreal version, my env is Win10, 64 bit, nvidia 1060, driver 419.35(newest).

Launch Unreal engine icon, new project -> c++ -> 3rd person -> set name (test1) -> make project button…

-> error says "Project can’t be compiled, Will you open at visual studio? "

and msgs,

프로젝트를 컴파일할 수 없었습니다. Visual Studio 에서 여시겠습니까?

Running I:/Unreal Engine/Epic Games/UE_4.21/Engine/Binaries/DotNET/UnrealBuildTool.exe Development Win64 -Project=“F:/Unreal-Projects/test4/test4.uproject” -TargetType=Editor -Progress -NoHotReloadFromIDE
Performing full C++ include scan (building a new target)
Creating makefile for test4Editor (no existing makefile)
Using Visual Studio 2017 14.14.26428 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428) and Windows 10.0.16299.0 SDK (C:\Program Files (x86)\Windows Kits\10).
@progress push 5%
Parsing headers for test4Editor
Running UnrealHeaderTool “F:\Unreal-Projects est4 est4.uproject” “F:\Unreal-Projects est4\Intermediate\Build\Win64 est4Editor\Development est4Editor.uhtmanifest” -LogCmds=“loginit warning, logexit warning, logdatabase error” -Unattended -WarningsAsErrors -installed
Reflection code generated for test4Editor in 10.0046925 seconds
@progress pop
Building 10 actions with 8 processes…
@progress ‘Compiling C++ source code…’ 0%
@progress ‘Compiling C++ source code…’ 10%
[1/10] PCLaunch.rc
@progress ‘Compiling C++ source code…’ 20%
[2/10] SharedPCH.Engine.cpp
i:\unreal engine\epic games\ue_4.21\engine\source\runtime\core\public\Windows/WindowsPlatformCompilerSetup.h(22): error C2338: Visual Studio 2017 versions 15.7 and 15.8 are known to have code generation bugs that affect UE4. Please update to version 15.9.
ERROR: UBT ERROR: Failed to produce item: F:\Unreal-Projects est4\Binaries\Win64\UE4Editor-test4.dll
(see …/Programs/UnrealBuildTool/Log.txt for full exception trace)
Total build time: 39.53 seconds (Parallel executor: 0.00 seconds)

-> then click “open at visual studio”

-> then vs launch and running… many msgs at down below line, and after some while, it just shows nothing. No engine editor started, vs is still there is nothing works.

So what now?

The log says:


error C2338: Visual Studio 2017 versions 15.7 and 15.8 are known to have code generation bugs that affect UE4. Please update to version 15.9.

So simply update your Visual Studio 2017 :wink:

Thanks, but already I installed VS 2019. UE4 doesn’t support VS 2019 yet?

VS2019 support got added in 4.22 which is still in preview.

I’m receiving errors every time I try to create a new project using C++ in unreal. I cannot figure out why this is happening, I feel like I’ve troubleshot this to death. Visual studio seems to work just fine by itself.

The project could not be compiled. Would you like to open it in Visual Studio 2017?

Running C:/Program Files/Epic/UE_4.23/Engine/Binaries/DotNET/UnrealBuildTool.exe Development Win64 -Project=“C:/Prog/MyProject21/MyProject21.uproject” -TargetType=Editor -Progress -NoHotReloadFromIDE
Creating makefile for MyProject21Editor (no existing makefile)
@progress push 5%
Parsing headers for MyProject21Editor
Running UnrealHeaderTool “C:\Prog\MyProject21\MyProject21.uproject” “C:\Prog\MyProject21\Intermediate\Build\Win64\MyProject21Editor\Development\MyProject21Editor.uhtmanifest” -LogCmds=“loginit warning, logexit warning, logdatabase error” -Unattended -WarningsAsErrors -installed
Reflection code generated for MyProject21Editor in 5.15848 seconds
@progress pop
ERROR: Unhandled exception: System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
at System.Security.Cryptography.MD5CryptoServiceProvider…ctor()
at UnrealBuildTool.ActionHistory.ComputeHash(String Text) in D:\Build++UE4\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\ActionHistory.cs:line 131
at UnrealBuildTool.ActionHistory.UpdateProducingCommandLine(FileItem File, String CommandLine) in D:\Build++UE4\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\ActionHistory.cs:line 160
at UnrealBuildTool.ActionGraph.IsActionOutdated(Action RootAction, Dictionary2 OutdatedActionDictionary, ActionHistory ActionHistory, CppDependencyCache CppDependencies, Boolean bIgnoreOutdatedImportLibraries) in D:\Build\++UE4\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\ActionGraph.cs:line 391 at UnrealBuildTool.ActionGraph.<>c__DisplayClass11_0.<GatherAllOutdatedActions>b__1(Action Action) in D:\Build\++UE4\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\ActionGraph.cs:line 576 at System.Threading.Tasks.Parallel.<>c__DisplayClass17_01.<ForWorker>b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)

Did you run: GenerateProjectFiles.bat -2019

I know this is really late of a reply, but I saw in your error message that the issue is with FIPS compliance. I actually just created a pull request to fix this since I ran into the same problem. Basically I replaced usages of MD5 (not FIPS compliant) with SHA-256. Dropping the built binaries on top of an existing install allowed me to create, compile, and package C++ projects on a FIPS compliant machine.

Can you elaborate on how you did this? The MD5 in UNREAL or in .NET? How do I find those and what do I replace them with?

All of this was on the .NET side since that is the only place Microsoft exerts any control. All it seems to be used for is checking whether or not command line inputs or android project inputs have changed. Neither case really needs to be cryptographically secure. There are two options, replace MD5 with another crypto system for those cases, which is what my pull-request does, or literally copy-paste and convert to C# a manual MD5 implementation since hash collision potential here is not a security violation.

Simply load up the UnrealBuildTool C# project from the source code (ideally from the release you are using), locate uses of MD5, change it to something else. You can build just the UnrealBuildTool in release mode and drop the resulting artifacts over top of the one installed using the client without issue. Everything will just work at that point.

Hi, sorry to bring this thread back, but I am also having the same issue where I have a machine that requires FIPS enabled. I changed the instances where MD5 is used to use SHA256 in the UnrealBuildTool VS solution and it builds fine, however at this point I’m confused what I need to do. Where do I need to copy the updated files to?

Ok, I got it! The solution for getting packaged builds to work on a FIPS machine is as follows:

Open the UnrealBuildTool solution in VisualStudio located in \Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.sln (or csproj file)
Then open \Engine\Source\Programs\UnrealBuildTool\System\ActionHistory.cs

Then change (around line 32)
from: const int HashLength = 16;

to: const int HashLength = 32;

And line 123 from:

return MD5.Create().ComputeHash(InvariantBytes);

to:

return SHA256.Create().ComputeHash(InvariantBytes);

Build the solution and packaging should work now.

In addition, I found a solution for getting Swarm to work for devices that require FIPS:
open the SwarmAgent.sln under \Engine\Source\Programs\UnrealSwarm
Then open \Engine\Source\Programs\UnrealSwarm\Agent\Channels.cs

and change line 122 from:
private SHA1Managed SHhash = new SHA1Managed();

to:
private SHA1CryptoServiceProvider SHhash = new SHA1CryptoServiceProvider();

then build the solution and run SwarmAgent again. It looks like SHA1Managed is incompatible with FIPS and SHA1CryptoServiceProvider is one that is compatible.