解决高版本VisualStudio编译低版本Unreal源码的常见问题与技巧
1. 环境配置的坑与填坑指南第一次用Visual Studio 2022打开老版本Unreal工程时我直接被满屏的报错整懵了。最典型的就是那个Windows SDK v8.1 must be installed错误明明系统里装着最新SDK它偏要旧版本。后来发现Unreal引擎的GenerateProjectFiles.bat里硬编码了SDK版本检测逻辑解决方法很简单用文本编辑器打开这个bat文件把里面的版本检测参数改成你实际安装的SDK版本就行。比如我遇到的情况就是把-2017改成-2022瞬间世界清净了。.NET Framework版本冲突也是个高频问题。有次编译时突然报错找不到.NETFramework,Versionv4.5引用程序集但系统明明装了4.5。折腾半天才发现VS2022默认带的引用程序集路径和旧版不同。解决办法是手动把C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.1里的文件复制到v4.5目录。这里有个细节要注意直接复制可能会遇到权限问题建议先获取文件夹所有权再操作。2. 路径问题的花式报错处理FastBuild报错堪称路径问题的集大成者。最常见的就是那个让人哭笑不得的VC\VC重复路径错误。打开FASTBuild.cs文件一看发现代码里写死了路径拼接逻辑。我的解决方法是直接注释掉多余的路径拼接代码改成ms_dirVCInstall ms_dirVSInstall。更绝的是Microsoft.VC141.CRT找不到的问题其实只要把VC143.CRT文件夹复制一份改名就行这种以假乱真的招数在解决老版本兼容问题时意外地好用。atls.lib丢失的问题困扰了我整整一个下午。最后发现这是Windows SDK目录结构调整导致的。新版本把这个库移到了不同路径解决方法是直接在项目属性里添加额外库目录$(WindowsSdkDir)Lib$(WindowsSDKVersion)um\x86。如果还不行建议检查下是否漏装了Windows 8.1 SDK的特定组件在VS安装器里勾选Windows 8.1 SDK下的Windows开发工具选项。3. 编译参数与模块配置技巧遇到cl: Error D8000这种玄学错误时千万别急着重装VS。我总结出的万能三步法是首先清理解决方案然后右键问题模块选择重新生成最后单独编译该模块。90%的情况下问题都能解决。如果还报错就得祭出终极杀招——手动修改.build.cs文件。比如有一次我在PublicDependencyModuleNames里添加了SlateCore依赖后那个顽固的链接错误就消失了。老项目编译时经常遇到C标准不兼容的问题。Unreal 4.25之前的版本默认用C14而VS2022默认是C17。这时候要在项目属性的C/C - 语言里手动设置C语言标准为ISO C14。还有个隐藏坑是编译器优化选项老引擎代码用/Ob2优化可能会出问题建议先改成/Od调试模式编译通过后再调整。4. 依赖管理与第三方库适配最让人头疼的是第三方插件兼容性问题。有次编译时遇到找不到openssl-1.0.2.lib的错误查了半天才发现新版本VS的库命名规则变了。我的解决方案是先用vcpkg安装openssl然后在BuildConfiguration.xml里添加自定义库路径。对于特别顽固的依赖问题可以尝试在引擎目录的BaseBuildTarget.cs里重写SetupDependencies方法。Python脚本兼容性也是个暗坑。Unreal 4.23之前用的Python2.7而新VS环境默认装的是Python3。我推荐的做法是在引擎的Engine\Build目录下创建Python27的虚拟环境然后修改UAT批处理文件指向这个专用环境。这样既不影响系统环境又能保证构建脚本正常运行。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437361.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!