【发布时间】:2014-05-28 04:15:33
【问题描述】:
我使用这种方法创建了 iOS 框架项目:https://github.com/jverkoey/iOS-Framework
工作得非常整洁,但我有点困惑如何包含我的框架工作所需的库/框架,特别是如何做到这一点,以防万一使用我的框架的 3rd 方客户端应用程序可以包括这些库也没有冲突。
假设我的框架代码需要这两件事:
- FacebookSDK.framework
- libFlurry.a
第一个是 iOS 框架。当我将它添加到我的框架中的“使用库链接二进制文件”阶段并尝试编译使用我的框架的客户端项目时,链接器抱怨缺少符号 - 我需要将 FacebookSDK 添加到客户端项目中太好了:如果客户端应用程序想要使用 Facebook,则不会发生冲突。
但是,当我对 Flurry 静态库执行相同操作时,在编译客户端项目时出现重复符号错误。这让我有点困惑,因为 FacebookSDK.framework 不只是一个打包的静态库吗?
ukaszs-iMac:FacebookSDK.framework lukasz$ file Versions/A/FacebookSDK
Versions/A/FacebookSDK: Mach-O universal binary with 3 architectures
Versions/A/FacebookSDK (for architecture i386): current ar archive random library
Versions/A/FacebookSDK (for architecture armv7): current ar archive random library
Versions/A/FacebookSDK (for architecture cputype (12) cpusubtype (11)): current ar archive random library
所以我的问题是:
- 为什么嵌入在框架中的库(如 Facebook)没有链接到我的框架项目产品,而包含为 .a 文件的库是?
- 如何在我的框架中包含 .a 文件,以便在使用我的框架的客户端应用也需要此特定静态库时不会产生重复符号错误?
【问题讨论】:
标签: ios frameworks linker static-libraries