UE4.17 will not compile with new studio2017_15.3 update

Hi,

I’ve just started trying out the 15.3 Preview. You need an updated SDK which is not publicly available:

https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewSDK

However, for now, I’ve managed to get further by just patching that header to forward-declare the IUnknown interface, like this:

interface IUnknown; // ADD THIS LINE HERE
extern "C++"
{
    template<typename T> _Post_equal_to_(pp) _Post_satisfies_(return == pp) void** IID_PPV_ARGS_Helper(T** pp) 
    {
#pragma prefast(suppress: 6269, "Tool issue with unused static_cast")
        static_cast<IUnknown*>(*pp);    // make sure everyone derives from IUnknown
        return reinterpret_cast<void**>(pp);
    }    
}

That gets around the compile error at least, but my testing is on-going, so do not assume that we support the 15.3.0 Preview yet.

Steve

thanks for reviewing, i will stick with studio2017_15.0 for now.

ue4.17 git release branch will not compile with todays (8/14/2017) released visual studio 2017, 15.3 update.

i have tested with a fresh ue4.17git release branch copy, and a freshly installed copy of visual studio 2017, 15.3. there is no way to install any other version of visual studio.

the following components generate an error:

UnrealFrontend
UnrealCEFSubProcess
ShaderCompileWorker
UnrealLightmass
UnrealVersionSelector
CrashReportClient
BootstrapPackagedGame
UnrealPak
UnrealWatchdog
BlankProgram
BuildPatchTool
ShaderCacheTool
SlateViewer
MinidumpDiagnostics
SymbolDebugger
TestPal
UnrealFileServer
UE4

all of them have the same error:
C2187 syntax error: ‘identifier’ was unexpected here C:\Program Files (x86)\Windows Kits\8.1\include\um\combaseapi.h 229

all of the errors point to that one file in windows 8.1 sdk.

i have also reinstalled all forms of windows sdk.

older visual studio 2017, 15.0 from Azure DevOps Services | Sign In is a workaround for this problem. make sure you uninstall existing versions first.

some people were having trouble with 15.0 installation, make sure you go to Download Visual Studio Tools - Install Free for Windows, Mac, Linux scroll ALL the way down and download+install the x86 version of Microsoft Visual C++ Redistributable for Visual Studio 2017 first, before attempting the 15.0 installation.

My VS 2017 Community upgraded to 15.3 on me and broke 4.15.1 compile (for spatialos) - cant seem to find a way to downgrade to 15.2 or previous.

the steps above i explained worked for me, for a 15.0 downgrade. you will need a Visual Studio Team Services account, im sure you can make one for free.

Looks to be a changelist on Master branch which fixes the issue here:
https://github.com/EpicGames/UnrealEngine/commit/4f48ef53ed646a22532e8e981f5515c94f303932

If you’re are on the source version (github) you can integrate that commit but if you are on the binary version (the launcher) you will have to wait till a hotfix is released I’m afraid.

This change didn’t help, i still have the issue.
C:\Program Files (x86)\Windows Kits\8.1\include\um\combaseapi.h(229): error C2187: syntax error: ‘identifier’ was unexpected here

This worked for me. If you’re on Windows 10, you probably don’t need the Windows 8.1 SDK.

Edit:
Just a follow-up to this. I didn’t need the 8.1 SDK on a freshly installed Windows 10 PC, but it was required on a PC that had been upgraded from 8.1 to 10. On both computers, I was able to compile after making these changes.

I had the same error… it looks like its fixed, see https://github.com/EpicGames/UnrealEngine/commit/6cee781ddf47558c9a59908428e7372a33774341

Yeah, this is a hack we added to make UE compile. But if you have any non-UE projects which include this header then you will likely hit the same problem until Microsoft release an updated SDK (or you apply that hack mentioned above).

Steve

Yeah… it worked for me too! I just did a git checkout , and I was good to go.
Thanks for the answer!!! gang gang :slight_smile:

already fixed by MS: Visual Studio Feedback

confirmed working
edit: spoke too soon the thing just fell apart

I’m gonna stick with the fix from epic until I have sure that I can reverse back to the main branch. Until now, It’s working fine for me.

So there’s no solution?

I did this change and still the same error. I don’t have the 8.1 sdk.

the answer by @Kanibel is the solution that worked for me. i am using latest visual studio and i simply merged those 2 commits.