【问题标题】:Categories in static library for iPhone device 3.0iPhone 设备 3.0 的静态库中的类别
【发布时间】:2010-11-11 23:19:15
【问题描述】:

我的静态库中有类别。任何应用程序开发人员都应将 -ObjC 标志设置为“其他链接器标志”以正确使用我的静态库。它适用于 iPhone 设备/iPhone Simulator 2.x 和 iPhone Simulator 3.0。但它会在 iPhone 设备 3.0 上崩溃。正如in this article 所写,它是新的链接器错误。他们建议多使用一个链接器标志:-all_load。但是当我添加这个标志时,构建也失败了,因为有重复的符号。

如何在 iPhone 设备 3.0 的静态库中使用类别?有什么建议吗?

【问题讨论】:

  • 我也有同样的问题,你解决了吗?
  • 在最新的链接器中,这似乎已得到修复,不再需要 -all_load。

标签: iphone iphone-sdk-3.0 linker static-libraries categories


【解决方案1】:

我们在Core Plot frameworkran into the same problem(3.0 下,-ObjC 不再链接类别)。我只能说,对我们来说,我们能够将 -all_load 选项添加到目标应用程序中的其他链接器标志中,并且消除了运行时错误。我们没有看到任何重复符号的警告。

我已经提交了链接器行为的错误报告,我相信其他人也有。

【讨论】:

    【解决方案2】:

    这是一个尝试通过 hack 修复另一个错误而导致的错误。 类别错误的 -all_load 修复完全是 hack。

    请参阅here 了解更多信息。

    【讨论】:

      【解决方案3】:

      当您将 -all_load 添加到其他链接器标志时,请确保所有框架、库使用的都与您的目标应用程序链接。否则,它将无法编译。在我的例子中,我有一个 MKMapView 类别,并且没有将 MapKit 框架与我的目标应用程序绑定,因此在构建时找不到该类别所属的类。

      【讨论】:

        【解决方案4】:

        我遇到了同样的“重复符号”问题。如果没有-all_load 标志,我们还必须在应用链接行中包含我们的库链接的所有库。从应用链接行中删除这些解决了这个问题。

        【讨论】:

          猜你喜欢
          • 2010-09-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-04
          • 2011-02-03
          • 1970-01-01
          • 1970-01-01
          • 2011-04-29
          相关资源
          最近更新 更多