定制UE4引擎(三)- VS2019重编、新建C++项目编译后无法运行
现在终于可以完全的使用了,在多台电脑测试,启动速度OK,C++项目可以创建和运行。
问题:上篇提到,启动引擎会在45% 83%等进度卡很久,以为是每次重编公共Shader。根据跟踪代码分析,就是在预加载引擎各个模块及启用的第三方插件。具体慢的原因还没找到,有些电脑OK,有些又不行。第二个问题,用新编引擎创建C++项目,可以正常编译,但启动不了。提示信息:the following modules are missing or built with a diffrent engine version。
今天就说说最后是怎么达到编译引擎可用的。
45% 83%卡的问题,现场还原。引擎是用VS2107编译的。 打开很慢的电脑有刚装的新系统电脑、安装了VS2019的开发机、安装了VS2017的开发机。卡顿的代码位置(UObjectBase.cpp Line:910 45% UObjectLoadAllCompiledInDefaultProperties)(LaunchEngineLoop.cpp Line:2889 71% LoadStartupModules)(Launch.cpp Line:152 83% EditorInit、UnrealEdGlobals.cpp Line:92 EngineLoop.Init()、LaunchEngineLoop.cpp Line:3654 GEngine->Init(this);)
发现了不了具体问题在哪,所以把怀疑的目光放在编译阶段。最后尝试新安装一台电脑并用VS2019进行编译,卡顿问题解决了。(神奇但也正常)。
你以为就这样结束了,引擎可以用了。当我怀着无比激动的心情创建一个C++项目后,愉悦的心情立马没了,编译报错。不过这个问题还好,以前同事电脑安装了老版本的FastBuild导致。 然而事情并没完,第二个问题来了。(the following modules are missing or built with a diffrent engine version)
现在,就看看第二个问题的导致的原因。下面是百度查出来的一段描述。
一台机器使用自行编译版本引擎修改了工程后,另一台机器也使用自行编译版本引擎编辑该工程,有时会出现标题的提示
解决办法:
打开\Engine\Binaries\Win64\UE4Editor.modules,把编辑过工程的机器的BuildId 复制到出现提示的机器中
然后逐个检查插件,同样保持一致:
\Engine\Plugins\MyStudio\MyPlugin\Binaries\Win64\EU4Editor.modules
BuildId用来标识编译的引擎的版本号
问题确实如上所说,那我是怎么就倒霉遇到这个问题呢?前面一篇讲了InstalledBuild.txt和SourceDistribution.txt两个文件。今天看看第三文件Build.version,它就代表了你UE的版本。如下图:

红色部分就是版本编码。创建项目时,会在项目里生成下面文件


如果两个版本号不一致,项目就没法启动。我之所以遇到这个倒霉的问题,是在把引擎从源码版改为Binary版时,将发布版的Build.version复制到UnrealEngine4.24.3\Engine\Build目录。而不是编译引擎时的Build.version。

如果你没看懂,那就看这里,第一招解决卡顿VS2019重编。
the following modules are missing or built with a diffrent engine version 检查项目和引擎的.modules中版本号是否一样。不一样的确保编译时和运行时用相同的文件\Engine\Build\Build.version