UE5.4插件集成CEF遇macOS链接错误:ld: framework 'cef' not found
解决UE5.4 M1 Mac下CEF插件链接器找不到cef.framework的问题
我在M1 MacBook Pro 2020上开发UE5.4.4的CEF集成插件时,遇到了链接器错误:
ld: framework 'cef' not found
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
已确认cef.framework放在插件ThirdParty目录,且MyPlugin.Build.cs配置了路径,但问题依旧。以下是实测有效的解决步骤:
1. 检查Build.cs框架配置是否符合UE5.4规范
UE5.4对Mac框架的引用逻辑有调整,确保路径拼接正确,且使用PublicAdditionalFrameworks添加框架:
using System.IO; using UnrealBuildTool; public class MyPlugin : ModuleRules { public MyPlugin(ReadOnlyTargetRules Target) : base(Target) { // 其他基础配置... if (Target.Platform == UnrealTargetPlatform.Mac) { string CEFBasePath = Path.Combine(ModuleDirectory, "../ThirdParty/CEF/Mac"); string CEFFrameworkPath = Path.Combine(CEFBasePath, "cef.framework"); // 添加CEF框架及依赖的系统框架 PublicAdditionalFrameworks.Add(new Framework( "cef", CEFFrameworkPath, new string[] { "Cocoa", "QuartzCore", "CoreGraphics", "Security" } )); // 添加框架搜索路径 PublicFrameworkPaths.Add(CEFBasePath); } } }
注意:路径必须是相对于插件模块目录的正确相对路径,避免硬编码绝对路径。
2. 验证cef.framework的架构匹配M1芯片
M1是arm64架构,若CEF编译时未指定该架构,会导致链接器无法识别。用以下命令检查架构:
lipo -info /你的插件路径/ThirdParty/CEF/Mac/cef.framework/cef
如果输出为Non-fat file: ... is architecture: x86_64,说明需要重新编译CEF:
运行automate-git.py时添加--arm64参数:
python automate-git.py --download-dir=~/cef_source --branch=6668 --arm64 --build
编译完成后替换ThirdParty目录中的cef.framework。
3. 修复Xcode项目的框架引用问题
UE生成的Xcode项目可能未正确同步Build.cs配置,手动检查调整:
- 打开UE项目生成的Xcode工程,找到插件的Target(通常在
Plugins/你的插件名分组下) - 进入
Build Phases->Link Binary With Libraries,确认是否有cef.framework,若没有则点击+手动添加 - 进入
Build Settings->Framework Search Paths,添加cef.framework所在目录的绝对路径,勾选Recursive
4. 清理构建缓存
缓存可能导致旧配置残留,执行以下操作:
- 删除UE项目根目录的
Intermediate和Build文件夹 - 清理Xcode派生数据:打开Xcode ->
Settings->Locations-> 点击Derived Data旁的箭头,删除对应项目的文件夹 - 重启UE编辑器,选择
File->Refresh Xcode Project,然后重新构建
5. 确认UE项目的Mac架构设置
确保UE项目架构与CEF一致:
- 打开UE编辑器,进入
Edit->Project Settings->Platforms->Mac - 将
Architecture设置为ARM64,关闭Use Rosetta for x86_64 Builds
内容的提问来源于stack exchange,提问作者project akame
相关产品推荐
相关产品推荐

