先說結論,VS有時候不用急着更新最新版本,包括工具也是,都是坑,再出問題我換17用了。
參考鏈接:
http://papalqi.cn/201910/cid=406.html
(不想聽我絮絮叨叨直接看鏈接,或者直接跳到最後看解決方案即可)
環境:Win10,VS2019最新版16.3.7,MSVC版本是14.23.28019
踩坑記錄:
最新項目使用UE4開發,爲了效果新加了apex插件,打開UE4的時候提示要重新編譯
決定用VS編譯
因爲可能後續會改到UE4源碼,所以當時源碼都載在項目同級文件夾裏,所以首先如下設置下:
如果很快就生成完畢,但是還是啓動不了的話,第三步改爲右鍵-重新生成
然後就是漫長的編譯過程
編譯到一半吧就該報錯了
很明顯是缺少了文件,再定位到具體行
是屬於UE4的PhysX庫的,這個文件無法編譯通過,查詢資料發現,最新版的VS2019,安裝時自帶的MSVC14.23,居然把這個用了很久的typeinfo.h直接刪了,官方人員給的解釋是,感覺沒什麼人用,直接移除了,後續改用<typeinfo>就得了
暈倒
論壇裏的很多外國人說你這個小版本更新,把14.22改到14.23,居然搞了這突破性變化,連標準庫都刪,搞的一堆人運UE4有問題,有毒吧。
開發者有點不好意思,說我的鍋我的鍋,然後補充說明進文檔了
給出的解決方案是,把代碼裏typeinfo.h換成typeinfo
然後還有人給出解決方案是,把以前的MSVC版本里的typeinfo.h的文件加到工具集裏面去。
然而我兩種方法都試了,也向同事要了typeinfo.h文件,換了之後重新編譯,又有一個LogUnrealMathTest.cpp failing的bug
提示UE4觸發了斷點,打開界面的時候卡在79%。
無奈關閉。坑真多。
然後吧,項目裏其他同學都是用VS2017進行開發,編譯這個基本不會出問題。
我剛好那時有19安裝包就裝了19,同時也想着微軟基本都是向下兼容,後續也不用再更新。
但是還偏偏就出這個問題
主程說你要不然換17吧,19坑這麼多,最新版其實都不用急着用。
但是裝17我電腦可能得更卡了,畢竟公司的電腦重裝系統不方便,要是家裏的電腦我就重裝系統了
現在unity四個版本裝電腦裏,VS也有15 19,再裝個17真的成全家桶了。
解決方案:
就想着這個只是運行庫的問題,畢竟14.22不出問題但是14.23出問題,就把MSVC換回去試試得了。
於是就打開vs的installer,點擊修改 - 單個組件,搜索MSVC,載了1.2G資源包,安裝MSVC14.22.27905
然後修改引擎源碼裏的UE4配置文件
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<WindowsPlatform>
<CompilerVersion>14.22.27905</CompilerVersion>
</WindowsPlatform>
</Configuration>
每個人的路徑可能不一樣,可以用everything直接搜文件名,替換裏面內容也可以
然後重新編譯
感動,過85%了
最後項目成功打開!踩坑完畢!
踩這個坑最搞笑的還是國外開發者也很剛,微軟開發者迴應說你可以這麼這麼做,有人就說那你幹嘛不幫我做了,我用你這最新編譯器還得改代碼,具體可以看最上面的微軟論壇的參考鏈接,還是挺逗的。
然後微軟的人也是鴿子,之前一個別的地方就已經出問題了,他們說16.3.7修復,然後我更新了16.3.7但是還是出問題
然後別人也回,看起來沒修復。。還是莫名喜感的