You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在自定义Framework中使用CocoaPods依赖库:image not found错误

解决自定义Framework集成SwiftWebSocket运行时库未加载问题

嘿,我之前做自定义Framework的时候碰到过一模一样的问题!这个dyld: Library not loaded错误本质就是运行时找不到SwiftWebSocket的框架文件,核心是@rpath路径配置和依赖嵌入没做好,给你一步步理清楚解决办法:

1. 确认CocoaPods依赖配置正确

首先检查你的Podfile,确保SwiftWebSocket是直接关联到你的自定义Framework target的,比如:

target 'TestFx' do
  use_frameworks!
  pod 'SwiftWebSocket'
end

然后执行pod deintegrate清理旧的集成,再重新pod install,确保依赖完全正确加载到你的Framework项目里。

2. 调整自定义Framework的Build Settings

打开TestFx的target配置,找到Build Settings面板,检查以下几个关键项:

  • Dynamic Library Install Name Base:设置为@rpath,这是让框架用相对路径查找依赖的基础
  • Runpath Search Paths:必须包含@executable_path/Frameworks和@loader_path/Frameworks,这两个路径是dyld运行时查找依赖框架的核心路径
  • Build Phases - Embed Frameworks:把SwiftWebSocket.framework添加到这个阶段,并且设置嵌入选项为Embed & Sign(iOS平台),确保依赖框架被打包到你的TestFx.framework里

3. 验证依赖路径是否正常

用otool -L命令检查你的TestFx.framework的依赖链,正常输出应该是这样的:

@rpath/SwiftWebSocket.framework/Versions/A/SwiftWebSocket (compatibility version 1.0.0, current version X.X.X)

如果显示的是本地绝对路径(比如/Users/xxx/...),说明CocoaPods的配置没生效,需要重新执行pod集成步骤。

4. 主App端的配置检查(如果你的Framework被主App引用)

如果你的TestFx是给主App用的,还要确保主App的配置没问题:

  • 主App的Runpath Search Paths也要包含@executable_path/Frameworks
  • 主App的Embed Frameworks阶段要包含TestFx.framework(如果TestFx已经嵌入了SwiftWebSocket,主App不需要再单独嵌入SwiftWebSocket)

额外排查小技巧

  • 确认你的TestFx是动态Framework:SwiftWebSocket通常是动态框架,静态Framework的依赖处理逻辑不同,如果是静态的,需要在Other Linker Flags里添加-ObjC或者-all_load
  • 清理Derived Data:Xcode的缓存有时候会搞乱路径,执行rm -rf ~/Library/Developer/Xcode/DerivedData后重新编译运行

总结一下:这个错误就是运行时找不到依赖的二进制文件,只要把路径配置和依赖嵌入这两点搞定,问题就能解决啦!

内容的提问来源于stack exchange,提问作者Pawel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:35:36