Cocoa Touch 静态库 - 与标准框架的链接

Posted

技术标签:

【中文标题】Cocoa Touch 静态库 - 与标准框架的链接【英文标题】:Cocoa Touch Static Library - Link with Standard Frameworks 【发布时间】:2012-02-10 15:37:53 【问题描述】:

我创建了一个使用标准苹果框架(如 MediaPlayer.framework 和 CoreData.framework)的 cocoa touch static。当我将我的主项目与这个静态库链接时,它会抛出错误,因为该库需要这些框架。

我的问题:有没有办法将静态库设置为链接到这些框架,这样我就不需要将它们添加到我的主项目中?我尝试将这些框架添加到静态库的“Link Binary with Libraries”构建阶段,但主项目仍然很合适。

我可能缺少某种构建设置标志。

【问题讨论】:

【参考方案1】:

不,遗憾的是没有办法实现这一点。您必须将主项目与库使用的框架链接起来。

【讨论】:

虽然根据我的经验我倾向于相信这一点,但 GData 静态库似乎以某种方式实现了这一点。他们的静态库中打包了一些库,编译时必须包含这些库,因为我的主项目在添加 GData 并链接它时不需要我重新添加它们。 code.google.com/p/gdata-objectivec-client 经过进一步调查,似乎 GDataFramework 目标在“将二进制文件与库链接”构建阶段包含这些框架,但 GDataTouchStaticLib 不包含这些库。考虑到框架有多个目标,对于 ios 和 Mac OS,它们必须能够在框架级别而不是可可静态库级别执行此操作。感谢您的意见。 我一般不了解 MacOS 框架,但 GData 包含一个项目中的所有文件,尽管他们说 该库包含具有 GTM 前缀的其他 Google 库他们所做的是他们基本上将源文件添加到 GData 项目中。如果你看一下框架目标,它只链接到 SecuritySystemConfiguration,没有子模块既不链接到框架,也不链接到静态库目标。

以上是关于Cocoa Touch 静态库 - 与标准框架的链接的主要内容,如果未能解决你的问题,请参考以下文章

静态 cocoa/cocoa-touch 库应该基于啥样的 SDK?

如何解决 Cocoa touch 框架中的符号名称冲突

带有嵌入库的 Cocoa Touch Framework Swift

Cocoa Touch 框架无法识别

Cocoa Touch 框架无法在嵌入项目中的模拟器上调试

在项目 SDK Cocoa Touch 框架中使用 Firebase Analytics 时崩溃