> 技术文档 > UE4.21源码踩坑记录_ue源码不是有效的字符串

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
类似这个帖子

  1. 首先问题本质参考这个。源于openssl自己的bug。

  2. 问题发现过程参考这个reddit帖子
    说实话我也不理解他说的是什么原理,但是大致明白问题是OPENSSL导致。

  3. 解决办法可以参考这个

我的解决过程

是参考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解决方法小结

  1. “uncompress_and_patch.bat 1.0.2g”解压两个
  2. 替换两个文件
  3. “build_openssl_win_all.bat 1.0.2g”编译文件

一定要手动运行两个bat

其他

很多人说到要修改环境变量

set OPENSSL_ia32cap=:~0x20000000

我个人也修改了,不知道不改有没有影响。