UE4.21源码踩坑记录_ue源码不是有效的字符串
UE4.21源码踩坑记录
- 一、第一个坑setup.bat
- 二、第二个坑,visual studio版本
-
- 1. windosw sdk 10.0.17
- 2. MSVC 14.16.27023
- 其他问题
- 三、第三个坑 openssl,sha1-x86_64.asm
-
- 我的解决过程
-
- openssl解决方法小结
- 其他
一、第一个坑setup.bat
红字
参考这个帖子,Commit.gitdeps.xml文件报错
去release找对应的版本下载,下载对应的“Commit.gitdeps.xml”
二、第二个坑,visual studio版本
我编译的ue版本是4.21
1. windosw sdk 10.0.17
参考这个链接,UE4 NDIS_MINIPORT_MAJOR_VERSION,这个问题会导致无法成功编译,需要限制SDK版本,他使用的10.0.17134.0版本下载不了。
官网有windosw sdk 10.0.17763.0的 iso,安装完之后,找到自己文件进行替换,限制编译使用版本
UnrealEngine-4.21\\Engine\\Saved\\UnrealBuildTool\\BuildConfiguration.xml
<Configuration xmlns=\"https://www.unrealengine.com/BuildConfiguration\"> <WindowsPlatform> <WindowsSdkVersion>10.0.17763.0</WindowsSdkVersion> </WindowsPlatform></Configuration>
2. MSVC 14.16.27023
msvs版本也要注意,我不知道怎么修改文件限制MSVC版本的使用,用的办法比较呆,直接
在
vs2022\\VC\\Tools\\MSVC
里面,把其它版本的MSVC删除,或者直接放进新建文件夹内,VS编译的时候就会只使用MSVC 14.16.27023。
总之,windosw sdk,和MSVC的版本
都要契合UE的版本
其他问题
参考这个
我也遇见error C1083 Cannot open include file ‘metahost.h’
然后按照他的方案安装了所有的.NET Framework版本,后面没遇到过了。
但是不确定是不是因为上面windosw sdk,和MSVC的版本引发的派生问题。
三、第三个坑 openssl,sha1-x86_64.asm
我遇到的问题是,编译好文件后,运行报错
sha1-x86_64.asm
类似这个帖子
-
首先问题本质参考这个。源于openssl自己的bug。
-
问题发现过程参考这个reddit帖子
说实话我也不理解他说的是什么原理,但是大致明白问题是OPENSSL导致。 -
解决办法可以参考这个
我的解决过程
是参考1.中的openssl问题
文中提到
Implement these two fixes manually:
也就是说,UE4.21文件里面自带的openssl-1.0.2g.tar.gz,它的代码是有漏洞的。要么替换压缩包,要么替换源代码。
我是手动修改了
第一个文件sha1-x86_64.pl
以及
第二个文件x86_64-xlate.pl
然后一定要编译openssl1.0.2g,也就是“build_openssl_win_all.bat 1.0.2g”
openssl解决方法小结
- “uncompress_and_patch.bat 1.0.2g”解压两个
- 替换两个文件
- “build_openssl_win_all.bat 1.0.2g”编译文件
一定要手动运行两个bat
其他
很多人说到要修改环境变量
set OPENSSL_ia32cap=:~0x20000000
我个人也修改了,不知道不改有没有影响。