UE4SS项目在Linux下使用MSVC-Wine构建问题分析与解决

UE4SS项目在Linux下使用MSVC-Wine构建问题分析与解决

RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games RE-UE4SS 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS

问题背景

在Linux环境下使用Wine和MSVC-Wine工具链构建UE4SS项目时,开发者遇到了两个主要问题:编码乱码错误和对象文件缺失问题。这类问题在跨平台开发中较为常见,特别是在涉及Windows工具链在Linux环境下运行时。

编码乱码问题

现象描述

构建过程中出现的错误信息显示为乱码,如"十䡍汥数⹲灣ੰ㩊䙜协屓䕕匴ⵓ䅐坌剏䑌摜灥屳楦獲屴十䡍汥数屲湩汣摵履十䡍汥数⽲十䡍汥数⹲灨⡰⤴›慦慴牥潲⁲ㅃ㠰㨳䌠湡潮⁴灯湥椠据畬敤映汩㩥✠祚楤⽳祚楤⹳❨›潎猠捵⁨楦敬漠⁲楤敲瑣牯੹"。

问题分析

这种乱码通常是由于字符编码转换问题导致的。MSVC编译器在Windows环境下默认使用本地代码页输出,而Linux环境通常使用UTF-8编码。当输出通过Wine传递时,如果没有正确处理编码转换,就会出现乱码。

解决方案

  1. 在wine-msvc.sh脚本末尾添加echo命令,这意外地解决了编码问题
  2. 确保Linux环境变量LANG和LC_ALL设置为UTF-8编码
  3. 尝试修改Wine注册表设置,将代码页设置为UTF-8

对象文件缺失问题

现象描述

构建过程中报告无法找到某些对象文件,如"cannot copy file Intermediates/.objs/Unreal/windows/x64/Game__Dev__Win64/deps/first/Unreal/src/UEngine.cpp.obj, file not found!"。

问题分析

这个问题可能有多种原因:

  1. MSVC-Wine提前终止了cl.exe进程,导致文件未完全写入
  2. 文件路径处理存在问题,特别是在跨平台环境下
  3. Xmake构建系统的缓存机制可能出现问题

解决方案

  1. 完全清理构建缓存:
    xrepo remove --all -y
    xmake f --clean
    
  2. 确保所有子模块已更新到最新版本
  3. 尝试使用较旧版本的MSVC-Wine工具链
  4. 手动执行失败的cl命令以获取更详细的错误信息

构建环境配置建议

对于希望在Linux环境下构建UE4SS Windows版本的开发者,建议遵循以下配置:

  1. 安装必要的依赖:

    • Wine 10.2或更高版本
    • winbind和samba
    • msvc-wine工具链
  2. 配置构建参数:

    xmake f -p "windows" -a "x64" -m "Game__Dev__Win64" \
    --versionCheck=n --ue4ssCross=msvc-wine \
    --sdk="/opt/msvc" -y
    
  3. 设置环境变量:

    export LANG=en_US.UTF-8
    export LC_ALL=en_US.UTF-8
    

经验总结

跨平台构建Windows应用程序在Linux环境下总会遇到各种挑战,特别是当涉及专有工具链如MSVC时。通过本文描述的问题和解决方案,开发者可以更好地理解可能遇到的障碍及其解决方法。

值得注意的是,虽然这些问题在本地环境中出现,但在CI环境中可能不会重现,这说明问题可能与特定系统配置有关。建议开发者在遇到类似问题时,首先尝试在干净的CI环境中验证构建流程,以确定问题是否特定于本地环境。

对于长期解决方案,建议关注相关工具链的更新,特别是MSVC-Wine项目,这些问题可能会在未来的版本中得到修复。同时,保持构建系统和依赖项的最新状态也是避免此类问题的好习惯。

RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games RE-UE4SS 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武奕昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值