Delphi 12.1+iOS SDK17编译报错:libcache.dylib找不到求助
iOS 17 SDK编译Delphi应用链接错误解决指南
环境配置
- Delphi 12.1
- iOS SDK 17(App Store新应用必填)
- Xcode 15.0.1
- Arm架构Mac OS 14.5
问题描述
编译iOS真机目标时触发链接错误:
[DCC Error] E2597 ld: warning: directory not found for option '-FC:\Users\franz\Documents\Embarcadero\Studio\SDKs\iPhoneOS17.0.sdk\System\Library\PrivateFrameworks' ld: file not found: /System/Library/PrivateFrameworks/AVFCapture.framework/AVFCapture for architecture arm64
模拟器模式可正常运行,手动将Mac端/System/Library/PrivateFrameworks复制到Windows端SDK目录后,出现新错误:
[DCC Error] E2597 ld: file not found: /usr/lib/system/libcache.dylib for architecture arm64
此前使用iOS 16 SDK可正常编译,但App Store拒绝该版本框架的新应用,已清理缓存、删除Windows端SDK目录重新导入,问题未解决。
解决步骤
1. 恢复SDK原始状态
立即删除手动复制到Windows端SDK目录下的PrivateFrameworks文件夹——iOS 17私有框架的权限和依赖结构与iOS 16差异较大,手动复制会打乱链接器的路径解析逻辑,引发更多问题。
2. 重新同步iOS 17 SDK
- 打开Mac端Xcode 15.0.1,进入
Xcode > 设置 > 平台,确认iOS 17 SDK已完整安装。 - 在Windows端Delphi中,打开
工具 > 选项 > 部署 > SDK管理器,删除已存在的iPhoneOS17.0.sdk。 - 重新连接Mac编译服务器,点击
刷新按钮,让Delphi自动从Mac端同步iOS 17 SDK,全程确保无同步报错。
3. 调整项目框架依赖
- 打开项目选项,进入
部署 > iOS设备,查看框架与库列表,移除对AVFCapture.framework的直接引用(该框架为私有框架,Delphi应通过公共Capture框架间接调用)。 - 检查项目中使用的第三方组件,确保其版本适配iOS 17 SDK——部分旧组件可能硬编码了iOS 16的私有框架路径,需更新至最新兼容版本。
4. 修复libcache.dylib缺失问题
iOS 17中libcache.dylib已合并至libsystem_cache.dylib,但Delphi链接器仍在引用旧路径,可通过以下方式解决:
- 在Delphi项目选项的
链接器 > 附加选项中,添加-lobjc参数,引导链接器正确解析系统库依赖。 - 若上述方法无效,在Mac端执行命令创建软链接:
完成后重新同步SDK到Windows端。sudo ln -s /usr/lib/system/libsystem_cache.dylib /usr/lib/system/libcache.dylib
5. 深度清理编译缓存
除常规清理外,删除以下缓存目录:
- Windows端:
C:\Users\franz\AppData\Local\Embarcadero\Studio\23.0\Cache - Mac端编译服务器:
/Users/<你的Mac用户名>/Library/Caches/Embarcadero/BuildServer
清理完成后重启Delphi和Mac编译服务器,重新编译项目。
内容的提问来源于stack exchange,提问作者Franz Andreani
相关产品推荐
相关产品推荐

