在iOS中的动态框架中包含一个静态库

问题描述:

我需要为我正在开发的项目创建一个框架(需要一个静态库)。我使用this tutorial来创建框架,然后将静态库复制到项目中并工作。在iOS中的动态框架中包含一个静态库

但是,当我把框架拖到一个iOS项目时,它显示了很多错误。

`Undefined symbols for architecture i386:"_OBJC_CLASS_$_SomeClassFromTheStaticLibrary",referenced from:_OBJC_CLASS_$_AnotherClass in MyFramework` 

我认为正在发生的是,iOS的项目要重新编译的框架,它不能,因为它不能找到静态库。 如果我将静态库添加到iOS项目,所有错误消失。这是我想要避免的。

基本上我想要iOS项目 - >框架 - >库,而不是在项目和框架中都有库。

我已经尝试添加静态库作为框架中的资源,但它没有工作。

+0

任何解决方案,你的问题老兄?我在这里面临类似的问题.. – 2012-04-02 07:47:43

+0

我确实解决了它,但我有点被骗。我可以访问所有三个项目的源代码,所以我重新编译了静态库作为框架。 这样我有iOS项目 - >框架 - >框架,只需要导入一个框架。 – OlivaresF 2012-04-04 22:01:28

+0

没有真正的解决方案呢?我甚至无法摆脱这个问题,如果我将静态库包含到iOS项目中... – b00tsy 2012-04-12 19:31:40

我怀疑这是可能的。当你想到发生的事情时,你会看到问题。

  1. 框架编译和静态库处理,使之类的额外的符号被剥离出来
  2. 该应用现已编制和反对的框架可能会或可能不会有符号的应用程序链接是需要

如果只有框架使用静态库(逻辑),但我无法找到跨应用程序共享代码的代码,我确实得到了这个工作。

我跟着这个link创建自定义框架。我在我的框架中有静态库,它可以正常工作。

为了我的理解,我已经复制了他的步骤my blog以及一个使其具有通用性的脚本。

+0

你在哪里有你的静态库?你是否在构建阶段标签中链接了它们? – OlivaresF 2012-03-17 17:59:17

如果符号是隐藏的(或者通过由默认/ GCC_SYMBOLS_PRIVATE_EXTERN隐藏设定为YES__attribute__ ((visibility ("hidden")))被施加到某些符号的符号),则该符号将是可利用时静态链接库中,但不是在动态链接框架。

确保静态库的符号不隐藏,并且您应该能够从您的应用程序访问它们。