4.10 C++ Transition Guide

Dear Community,

Yay for 4.10!

Here’s the thread where you can share your notes during the upgrade process from prior engine versions to 4.10!


**Visual Studio 2015 Is Required**

For 4.10 you need to get Visual Studio 2015.

**Make sure to not do the standard installation and instead use the "custom" option**, and make sure that under **Programming Languages** you select **Visual C++**

**VS 2015 Download:**
http://go.microsoft.com/fwlink/?LinkId=532606

VS FAQ

1. Will this remove my 2013 install?

no, thankfully not

2. Will all my .sln’s now try to load in 2015

No, amazingly not, the .sln files are linked to what’s called VS Version Selector, which chooses the appropriate version for you.

My old VS 2013 UE4 project sln files still load in 2013, removing that potential issue entirely!

3. Will VS know to open 4.10 projects with 2015 instead of 2013?

Yes, when you switch engine versions (right click on .uproject -> switch engine version), VS 2015 will be the version that gets opened when you open the .sln file.


**Conclusion**

There's not reason to hesistate to get VS 2015 added to your computer right now, it will not hinder VS 2013 and pre-4.10 UE4 development.
 

Have fun today!

:slight_smile:

Rama

This isn’t true, I was able to compile whole engine with 2013, but of course: “We’ll be fully retiring support for Visual Studio 2013 in an upcoming release.” ( Unreal Engine 4.10 Released! )

So how do I get the GenerateProjectFiles.bat to generate solution file for visual studio 2015 for building Unreal Engine itself?

I’m having nightmares with VS 2015 installation. It just refuses to install properly. Stack Overflow searching has fixed a couple of my problems, but Unreal still can’t detect it. Anybody else having issues? Debating a full format at the moment -.-

Hey guys, could you check if you get dedicated server configurations picked up by UBT in 4.10? I’ve bumped into this strange issue, and wondering if I’m the only one: Where are server configurations in 4.10? - Programming & Scripting - Unreal Engine Forums

Rama, thanks for this hint.

same here, exactly

Quoting your own answer to this question for thread completeness:

“So the answer is: build the engine from source to have server configurations. I had no problem with server configs in a source-built 4.10.”

:slight_smile:

You’re welcome!

Wishing you luck with this! Anyone else feel free to post your research here on this topic!

:slight_smile:

Rama

It’s not required if you are using a custom engine build, that’s for sure, that is very good to clarify!

However Epic does say this about the launcher engine version of 4.10:

“Important: The launcher distribution of the engine now requires Visual Studio 2015 with C++ support enabled.”

Pierdek, are you saying you got a launcher version working with 2013?

:slight_smile:

Rama

I too have just had issues trying to install VS2015, and solved the issue I was having. Took a morning at work to solve (this was actually something I was doing for work, not related to games). During installation (community for me, but enterprise was exhibiting the exact same issue), the installer writes logs to %TEMP% (ie c:/users/XXXX/appdata/temp), there’s a log for each component, look for logs to the components that failed to install, this should help you diagnose the problem for your situation. Below I outlined what I did to solve my problem, hopefully its the same for you:

TL;DR: Make sure .vsix files are associated with the new VSIXInstaller.exe in your failed installation folder.

For me TeamExplorer, nuget packager manager, etc… were failing to install. All of these failing packages are actually just Visual Studio extensions (.vsix files). It was failing to run the installer for these files. I think my issue came from it trying to use the incorrect .vsix installer (I have VS2012 already installed), the vsix installer itself dumps a log to the same location, it will be more descriptive, from this I derived that it essentially requires the new vsix installer (VSIXInstaller.exe) in c:\Program files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ to run.

So to confirm sanity I extracted the .vsix for TeamExplorer from the .cab file, you can hunt this down in the package cache (C:\ProgramData\Package Cache) or an .iso installation, tried to install it (just double-click as it should be associated with an installer already possibly, if not just apply the solution anyway), and I received the same error message. Cool a repro case!

The solution is, open the properties of the file and change what that file type opens with to the vsix installer in the partially installed VS2015 IDE folder. Run the installation manually for it again and it should succeed (if not then look at logs again maybe its something different). I then re-launched the normal VS2015 installation process again, waited and great success!

Best of luck on this frustration.

Note: appdata and ProgramData are hidden folders.

Note2: I exhausted my weekly quota of swearing at the screen on this one, installers really need to be a bit more informative about how they’re failing, not just tell you to contact your vendor…

Note3: The logs it produces are super handy at finding the problems, albeit verbose as hell, search for “error” to make life easier, linux people would tell you to grep…

I managed to fix it. The problem was EnabledGraphics.exe (or similar) was stalling and causing the whole installer to stall, so when it did it’s job I just killed the process in task manager and it resumed. Says it didn’t install properly, but it’s been working fine so far even with Android debugging.

One thing to add to the transition guide:

FRepMovement now has additional flags for the precision of the replicated properties. By default, Rotation is replicated at 8-bits-per-value which is considerably less precision than before, and Velocity & Location are reduced to no-decimal precision instead of the old 2-decimal precision. Although this is great for most applications, if you are experience jittery rotation on client-controlled objects just change it to 16-bits per component and it’ll be back to how it was before. This is unfortunately undocumented in the release notes for some reason, and I’ve found a couple of changes to Slate/UMG that have broken a few other network-based activities. Shall report back when I know how to fix it.

It does also add a tiny bit of overhead to FRepMovement as well because those properties themselves are replicated - so be mindful of your bandwidth :slight_smile:

Issue:
-Using “abs()” causes ambiguous errors on compile.

Resolution:
-Use “FMath::Abs()”

Ive had VS2015 community for a while and its been working just fine for stuff other than UE, so i decided to upgrade to 4.10 and get rid of VS2013 since 4.10 fully supports 2015 now,
but there seems to be some issue with the default include dirs. As a side note, it happens even when creating new/empty UE C++ projects.



PCH.TestProject.h.cpp
<UE 4.10 Path>\Engine\Source\Runtime\Launch\Resources\Windows\PCLaunch.rc(10) : fatal error RC1015: cannot open include file 'windows.h'.
<UE 4.10 Path>\Engine\Source\Runtime\Core\Resources\Windows\ModuleVersionResource.rc.inl(3) : fatal error RC1015: cannot open include file 'windows.h'.
<VS2015 Path>\VC\INCLUDE\crtdefs.h(10): fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory


I went and checked the dir to make sure that i had the win 10 kit and it seems i have more than one version or something
so i replaced the project settings paths with the correct paths “Windows Kits\10\include\10.0.10150.0…” and im still getting the same stuff.

I really doubt that the fact that i have the community version causes this error,
this is the first time im having default include issues with UE so im quite clueless, is there anyone else having the same issue?

EDIT#1: After some searching this seems to fix the issue: Build errors. windows.h etc. [SOLVED] - C++ Gameplay Programming - Unreal Engine Forums

EDIT#2: Seems to be working fine now and changes to the code are applied.
Though, compiling from inside the editor gives me an error “<VS2015 Path>\4.0\VC\INCLUDE\cstdio(13)” cant find <stdio.h> while it compiles from VS just fine. Weird.

EDIT#3: After 3 hours of messing with the project files, i believe that for some reason UnrealBuildTool can’t find my Win SDK directory and it wont use the Include directories set under “VC++ Directories” either.
Its not just happening with the stdio file, UnrealBuildTool is having the same errors as VS before i set the include directories under project settings. Is there any place to set the include directories for the BuildTool?
Starting to think that im gonna have to do a clean boot, with just vs2015 installed and one windows kit. Or ill just go back to good 'ol 4.9…

Ill be updating this post with the solutions to my issues in case someone else is having the same.

Quick heads up – VS2013 Ultimate with UE 4.9.2 and complex project, can coexist nicely with VS2015 Enterprise with UE 4.10.0 and the same project (but in different directory)

Just keep installations in separate directories, and git to push/pull ‘trial’ 4.10 setup of your project, while maintaining active development on 4.9 until ready to switch.

focus on ‘stability and upgrade to VS2015’ appears to have left most of the C++ specifics intact and in perfect working order.

I had to uninstall windows driver kit and for every new c++ project i make with 4.10, i need to go to the project properties under “VC++ Directories”, i have to set include and library directories to inherit from parent.

I would have thought epic would have tested to make sure you could build a project out of the box but apparently not?

Anyone else seem to be having this problem ? :

Error LNK1101 incorrect MSPDB140.DLL version;

From the source code, it keeps happening when I try to create a new project, UE4 editor wont build it and suggets to build from Source code…

Tried unistalling and reinstalling both VS and 4.10, however VS2013 and 4.9 works perfectly. Searching the error, I found out that it might seem like a VS bugg but I’m not sure. Any help is more than welcome!

@Xulture, thats exactly what i was thinking to do, C++ wise i only had to change like one line of code, so its no biggie to switch.

@Chooka, i have WDK 10 too, didnt think that could actually cause problems. What errors where you getting before you uninstalled it? I cant really uninstall it though since im currently working with it.

I guess some of us will have to wait for the 4.11 release or a 4.10 update with some fixes for VS2015 before upgrading from 4.9.

@ HELLFIRE1

Try adding these 4 to your additional includes:

Blog

$(UniversalCRT_IncludePath)
$(UniversalCRT_LibraryPath_x86)
$(UniversalCRT_LibraryPath_x64)
$(UniversalCRT_LibraryPath_arm)

I had a similar error, this fixed it. I had to add these to UE4.sln for the initial engine build and then to my new C++ project.

Cheers

For source builds, before you generate your project files execute this for 64 bit builds:



@echo Setting Includes paths now....
SET INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um;%INCLUDE%
SET INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt;%INCLUDE%
SET INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared;%INCLUDE%
echo Setting Library paths now....
SET LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64;%LIB%
SET LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x64;%LIB% 


replace 10586 with 10240 on every line if thats your installed SDK (take a look on the folders in your HD).

Then you wont have build problems regarding the location of crt libs/headers.

@Luis_Martinez: I had a nearly similar issue with mspdb120.dll when I had both VS2010Pro, VS2013EE, some WinSDKs installed. I had to uninstall them all, which was a bit tricky, had to check installation dates to remove everything, then installed VS2013Community and it have been fixed. The same >might be< the reason, but not for sure.
the old thread: https://answers.unrealengine.com/questions/54957/converting-project-to-42-missing-dll-error.htmlEdit: if that dll is missing probably you have not installed VC++ redistributables, and most importantly you need VS2015 for UE4.10 (you mentioned to have only VS2013)