UE5版本Windows构建pc平台报错googletest的问题记录

报错信息

近期使用UE5以上的版本在构建demo,报错有重复的gtest符号,报错信息部分如下

gtest.lib(gtest-all.obj) : error LNK2005: "public: int __cdecl testing::TestPartResultArray::size(void)const " (?size@TestPartResultArray@testing@@QEBAHXZ) already defined in gtest.lib(gtest-all.obj)

排查解决过程

基本情况

1.demo中确实是主动引入了googletest来做单元测试。
2.在之前UE4.18-4.25版本的Windows平台构建demo时都没有遇到。

结合上述两个点,初步可以认为
1.gtest.lib这个库本身没问题
2.由于有符号重复,怀疑是UE高版本自己引入了googletest导致的问题

验证猜想

1.对gtest.lib的库做符号检查,可以确认是没有重复符号的。
#mac上 nm -C gtest.lib #windows上 dumpbin /SYMBOLS gtest.lib
2.在UE的不同版本中,直接搜索该重复的符号。

  • 在高版本的UE上确实有使用gtest
    在这里插入图片描述

  • 直接打开一个文件,跳转到gtest.h的地方。可以看到确实是有自带一个googletest的模块
    在这里插入图片描述

  • 查找引用googletest的插件,屏蔽其启用
    在这里插入图片描述
    在这里插入图片描述

  • 可以考虑直接把这个模块在win64上干掉。直接改成"PlatformAllowList": []。不然就得找到那个依赖了这个RigLogic插件的源头插件,将其禁用。

最后重新尝试构建,不再构建报错了,成功构建出demo.exe。

在使用 Unreal Engine 5 的 Cesium 插件进行项目打包时,可能会遇到一些常见的错误,这些问题通常与插件配置、依赖项缺失或构建环境设置不当有关。以下是几种常见的打包错误及其解决方案: ### 插件未正确安装或启用 如果在打包时提示找不到 Cesium 插件或模块,可能是插件未正确安装或未在项目中启用。确保插件已通过 Unreal Engine 编辑器的“插件”管理器正确安装,并且在“编辑”>“插件”中已启用 Cesium 插件 [^1]。 ### 第三方库缺失或路径配置错误 Cesium 插件依赖于一些第三方库(如 Cesium Native),如果这些库未正确编译或路径未设置,打包时可能会失败。检查 `\Plugins\cesium-unreal\Source\ThirdParty` 文件夹下的依赖库是否完整,并确保 `include` 和 `lib` 路径在构建配置中正确设置 [^2]。 ### 源码编译问题 如果使用的是从源码编译的 Cesium 插件,打包时可能会遇到编译错误。确保已按照官方文档正确拉取源码并配置构建环境。建议使用 Git 递归克隆源码: ```bash git clone --recursive https://github.com/CesiumGS/cesium-unreal.git ``` 然后将插件文件夹放置在 UE 项目的 `Plugins` 目录下,并确保在 Visual Studio 或其他 IDE 中重新构建项目 [^4]。 ### 插件与引擎版本不兼容 Cesium 插件可能对特定版本的 Unreal Engine 有依赖性,如果使用的是非兼容版本,可能会导致打包错误。建议确认当前使用的 Unreal Engine 版本是否与 Cesium 插件兼容,并参考官方文档进行版本匹配 [^5]。 ### Linux 平台上的编译问题 在 Ubuntu 等 Linux 系统上使用源码编译时,可能会遇到依赖项缺失或构建脚本错误。确保已安装所有必要的构建工具和依赖库,如 `build-essential`、`cmake` 等,并尝试将插件放置在 `UnrealEngine/Engine/Plugins` 目录下,而不是项目目录中 [^3]。 ### 插件模块未正确注册 如果打包时提示“Engine modules cannot be compiled at runtime”,这通常意味着插件模块未通过 IDE 正确构建。建议使用 Visual Studio 打开 `.sln` 文件,手动构建插件模块后再进行打包 [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值