如何在 Xcode 4 上弱链接框架?
Posted
技术标签:
【中文标题】如何在 Xcode 4 上弱链接框架?【英文标题】:How do I weak link frameworks on Xcode 4? 【发布时间】:2011-09-22 18:31:49 【问题描述】:我需要将一些框架与我的目标进行弱链接。 但是我找不到怎么做...
如果我尝试在 3.2 iPad 模拟器上运行我的项目,我会收到以下错误:
dyld: Library not loaded: /System/Library/Frameworks/iAd.framework/iAd
Reason : Image not found
谢谢!
【问题讨论】:
【参考方案1】:转到您的项目 -> 目标 -> 构建阶段 -> 将二进制文件与库链接。
然后将要弱链接的库从“必需”更改为“可选”。
【讨论】:
我已将框架启用为“可选”并且应用程序在设备上运行,但我在控制台中收到此消息“-[ViewController contollerABC] [ABCDocument withDocumentFilePath:'/var/mobile/Containers/ Bundle/Application/DFBD7E29-CD8E-4F3B-AA56-2A9A55F63499/XYZKitDemo.app/Document.pdf'密码:'(null)'] 失败。” .你能告诉我问题是什么吗? 这个坏了。【参考方案2】:这现在不起作用。请点击以下链接: https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html
选择您要修改的目标并显示其构建阶段。
展开 Link Binary With Libraries 构建阶段以查看目标当前链接的框架。
如果您要弱链接的框架在 Link Binary With Libraries 构建阶段中列出,请选择它,然后选择 Edit > Delete 将其删除。
现在您可以告诉链接器对该框架使用弱链接。
选择目标,打开其信息窗口,然后单击构建。
在其他链接器标志构建设置中,添加以下命令行选项规范,其中 FRAMEWORK_NAME 是您要弱链接到的框架的名称: -weak_framework FRAMEWORK_NAME
构建您的产品。
【讨论】:
对我来说,使用 Xcode 12.3,在 2020 年 12 月,uvesten 给出的接受答案(将“必需”更改为“可选”)有效并且与此答案具有相同的效果。也就是说,当我查看构建脚本时,在链接阶段,当 FRAMEWORK_NAME 的弹出窗口设置为“必需”时,链接器调用具有参数“-framework FRAMEWORK_NAME”,但如果 FRAMEWORK_NAME 设置为“可选”,该参数改为“-weak_framework FRAMEWORK_NAME”。因此,如果Required vs. Optional 确实在 2013 年被打破,Apple 显然已经修复了它。 嗨!谢谢!我还有一个问题如何排除 armv7 架构的库?以上是关于如何在 Xcode 4 上弱链接框架?的主要内容,如果未能解决你的问题,请参考以下文章
如何在构建需要此包的 xcode 项目时链接 macOS 包所需的框架