定制UE4引擎(三)- VS2019重編、新建C++項(xiàng)目編譯后無法運(yùn)行
????現(xiàn)在終于可以完全的使用了,在多臺電腦測試,啟動速度OK,C++項(xiàng)目可以創(chuàng)建和運(yùn)行。
????問題:上篇提到,啟動引擎會在45% 83%等進(jìn)度卡很久,以為是每次重編公共Shader。根據(jù)跟蹤代碼分析,就是在預(yù)加載引擎各個模塊及啟用的第三方插件。具體慢的原因還沒找到,有些電腦OK,有些又不行。第二個問題,用新編引擎創(chuàng)建C++項(xiàng)目,可以正常編譯,但啟動不了。提示信息:the following modules are missing or built with a diffrent engine version。
????今天就說說最后是怎么達(dá)到編譯引擎可用的。
????45% 83%卡的問題,現(xiàn)場還原。引擎是用VS2107編譯的。 打開很慢的電腦有剛裝的新系統(tǒng)電腦、安裝了VS2019的開發(fā)機(jī)、安裝了VS2017的開發(fā)機(jī)??D的代碼位置(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);)
發(fā)現(xiàn)了不了具體問題在哪,所以把懷疑的目光放在編譯階段。最后嘗試新安裝一臺電腦并用VS2019進(jìn)行編譯,卡頓問題解決了。(神奇但也正常)。
????你以為就這樣結(jié)束了,引擎可以用了。當(dāng)我懷著無比激動的心情創(chuàng)建一個C++項(xiàng)目后,愉悅的心情立馬沒了,編譯報(bào)錯。不過這個問題還好,以前同事電腦安裝了老版本的FastBuild導(dǎo)致。 然而事情并沒完,第二個問題來了。(the following modules are missing or built with a diffrent engine version)
????現(xiàn)在,就看看第二個問題的導(dǎo)致的原因。下面是百度查出來的一段描述。
一臺機(jī)器使用自行編譯版本引擎修改了工程后,另一臺機(jī)器也使用自行編譯版本引擎編輯該工程,有時會出現(xiàn)標(biāo)題的提示
解決辦法:
打開\Engine\Binaries\Win64\UE4Editor.modules,把編輯過工程的機(jī)器的BuildId 復(fù)制到出現(xiàn)提示的機(jī)器中
然后逐個檢查插件,同樣保持一致:
\Engine\Plugins\MyStudio\MyPlugin\Binaries\Win64\EU4Editor.modules
BuildId用來標(biāo)識編譯的引擎的版本號
問題確實(shí)如上所說,那我是怎么就倒霉遇到這個問題呢?前面一篇講了InstalledBuild.txt和SourceDistribution.txt兩個文件。今天看看第三文件Build.version,它就代表了你UE的版本。如下圖:

紅色部分就是版本編碼。創(chuàng)建項(xiàng)目時,會在項(xiàng)目里生成下面文件


如果兩個版本號不一致,項(xiàng)目就沒法啟動。我之所以遇到這個倒霉的問題,是在把引擎從源碼版改為Binary版時,將發(fā)布版的Build.version復(fù)制到UnrealEngine4.24.3\Engine\Build目錄。而不是編譯引擎時的Build.version。

????如果你沒看懂,那就看這里,第一招解決卡頓VS2019重編。
????the following modules are missing or built with a diffrent engine version 檢查項(xiàng)目和引擎的.modules中版本號是否一樣。不一樣的確保編譯時和運(yùn)行時用相同的文件\Engine\Build\Build.version