Crossposting from AVRDevelopers (Google VR support mailing list):
We are trying to move the studio over to using a source build of Unreal, but are running into a dll issue. Each time the project is opened, users are getting this message.
The following DLLs are missing or built with a different version of the engine:
UE4Editor-Myproject.dll
The file is there, so we have been going under the assumption that the engine version is mismatched. There is a thread online that did not solve the issue.
There are a number of people that do not do source builds, or have visual studio installd. How can we prevent this error from coming up each time a code change is submitted? It would be best if users did not have to try to “rebuild them now” each time we change something.
One more piece of useful information
We currently do not have our game under the engine folder. our folder structure is
/SomeFolder/
/SomeFolder/Engine
/SomeFolder/Game
Hey Terry,
There are a few metadata files generated during the build process that need to be checked into source control with your EXE and DLLs. In particular, the Unreal build system generates a UE4Editor.target file and various UE4Editor.modules files that contain a “BuildId” field. In order for UE4Editor to launch, the “BuildId” GUID needs to be consistent across all of these files to ensure the EXE and DLLs are binary compatible. That’s how I understand the system to work, anyway.
I hope this helps!
Josh May
To clarify the current situation/problem a little more:
Distributing Terry’s builds works fine (after some fiddling)
He checks in the Engine and Project binaries.
Everyone on the floor syncs, and continues working fine.
Another programmer (me) syncs and starts working on a c++ Project feature.
The dependency graph (missing intermediate files, svn modified times, etc) forces a recompile of the entire engine.
This generates a new GUID for the engine on my machine.
I need to check in my Project feature and related assets.
The problem is that if I only check in the Project specific files, the dll is associated to a different GUID than the checked in Engine GUID.
If the project dll changes force a checkin of the Engine files:
- wastes a lot of syncing time for everyone on the floor
- programmers will have to recompile the engine even more often
- kinda defeats the purpose of dlls
Does the project dll actually store the engine version internally, or just use the .target / .modules file? Could I just not check in those support files, and the new dll will think it is matching the engine?
We tried this locally (copied my generated .dll and .pdb), and it worked on one machine, and not on another programmer’s. Investigating further, the guid locations are inconsistent on which values match, even between the engine module and target files mentioned above, as well as other values for the gameEditor module/target files. So at this point, I basically have little idea what is actually going on.
Thoughts?
In the grand scheme of things, is there a way to avoid
- Programmers needing to check in the engine when only making changes to the game
- Users needing to sync the game and engine, when only game changes have been made by a programmer