MVS 2013 error

When I am building UE4 in MVS 2013 as I have seen in your video explanations, I get 3 errors.

Could I just confirm that you have installed the June 2010 DirectX runtime? (you may have already had it installed).

http://www.microsoft.com/en-gb/download/details.aspx?id=8109

It does not help

What happens if you run UE4\Engine\Binaries\Win64\UnrealHeaderTool.exe directly? Unfortunately VS can hide some error messages, and running it directly should show these.

UnrealHeaderTool.exe It does not exist

Ah, in the list of projects in your solution, you should see one for UnrealHeaderTool. Could you right click on that and select Rebuild and let me know what happens.

It’s odd that that hasn’t built itself though, how are you building? Just using Build Solution (pressing F6 or F7 depending on your key mappings)?

I think it’s the same error

This seems to be the error generated when the UHT finds a cyclic dependency between headers (it causes UHT to crash). Have you made any changes to the source that would cause this?

This particular crash is fixed by https://github.com/EpicGames/UnrealEngine/commit/91c7acd3a8d6b5f30816472e60a66ede51e3ee55

so how i can fix it ?

Assuming you’ve not made any changes to the source code that would cause this to happen, the only thing I can suggest at this point is to merge/cherry-pick the revision I linked to in my previous comment (91c7acd) into your local git checkout, and see if that fixes the crash.

If it doesn’t, I’ll forward this onto someone from the Core team.

i don’t know how to do that
maybe you can help me with that

It should be as simple as running git cherry-pick 91c7acd, (docs) but I tried it, and the layout of UHT has changed between 4.1 and master, so that change won’t merge :frowning:

The change to FClasses::IsDependentOn needs to be applied to FHeaderParser::IsDependentOn instead.

Open up Engine\Source\Programs\UnrealHeaderTool\Private\HeaderParser.cpp and find the function FHeaderParser::IsDependentOn

Replace the following:

UClass* Dependency = FindClass(*It->ToString());

if( !Dependency )
{
	// Error.
	continue;
}

With this:

auto DependentName = It->ToString();
UClass* Dependency = FindClass(*DependentName);

if( !Dependency )
{
	// Check if DependentName is a header file. If so, rerun the check on name without ".h" extension.
	if (DependentName.EndsWith(TEXT(".h")))
	{
		DependentName.RemoveFromEnd(TEXT(".h"));
		Dependency = FindClass(*DependentName);
	}

	// If still no class found, we're out of luck.
	if (!Dependency)
	{
		// Error.
		continue;
	}
}

I’ll make sure this fix is merged to 4.2, and I’ll also see about getting the fix above merged into 4.1.