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

时间:2012-03-17 03:18:24

标签: iphone objective-c ios cocoa frameworks

我需要为我正在处理的项目创建一个框架(需要一个静态库)。我使用this tutorial来创建框架,然后将静态库复制到项目中并且它可以工作。

但是,当我将框架拖到iOS项目时,它显示出大量错误。

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

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

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

我尝试在框架中添加静态库作为资源,但它不起作用。

3 个答案:

答案 0 :(得分:0)

我怀疑这是可能的。当你想到发生了什么时,你会看到问题所在。

  1. 编译框架并处理静态库,以便删除额外符号之类的内容
  2. 该应用程序现已编译并链接到框架,该框架可能有也可能没有应用程序所需的符号
  3. 如果只有框架使用静态库(逻辑),我确实可以使用它,但是我找不到在框架中共享代码的方法。该应用程序。

答案 1 :(得分:0)

如果隐藏了某个符号(通过默认隐藏的符号/ GCC_SYMBOLS_PRIVATE_EXTERN设置为YES__attribute__ ((visibility ("hidden")))应用于某些符号),则该符号在静态时可用链接库,但不是动态链接框架。

确保不会隐藏静态库的符号,您应该可以从应用中访问它们。

答案 2 :(得分:-2)

我已按照此link创建自定义框架。我的框架中有静态库,它可以正常工作。

我已将my blog中的步骤复制到我的理解中,并附带一个脚本以使其具有普遍性。