【问题标题】:Linking error with iOS app with cross-referencing multiple static libraries使用交叉引用多个静态库的 iOS 应用程序链接错误
【发布时间】:2010-12-16 17:53:47
【问题描述】:

我将一个 Xcode iPhone 项目拆分为多个较小的项目以便代码重用。 结构如下:

+------------+
|    App     |
+------------+
      |
      +------------------+
      |                  |
+--------------+ +--------------+
| Static Lib A | | Static Lib B |
+--------------+ +--------------+
        |                |
        +----------------+
                |
         +--------------+  +----------------+
         | Static Lib Z |--| Static Lib KAL |
         +--------------+  +----------------+

一切都正确编译,但一旦链接应用程序,链接器就找不到 KAL(开源日历库)库的 2 个符号。 每个库都有一个交叉引用,所有档案都添加到“将二进制文件与库链接”构建阶段。

错误是:

未定义的符号:
“_OBJC_CLASS_$_KalViewController”,引用自:
libA.a(AViewController.o) 中的 objc-class-ref-to-KalViewController
“_OBJC_CLASS_$_KalDate”,引用自:
libA.a(AViewController.o) 中的 objc-class-ref-to-KalDate
ld:未找到符号
collect2: ld 返回 1 个退出状态

我在 LibA 的 AViewController 中使用来自 LibZ 的一个类,而他又在使用 LibKAL 中的一个类。

PS:A 和 B 的分离只是因为不是每个构建的 App 都需要两者提供的功能。

【问题讨论】:

    标签: ios xcode linker static-linking


    【解决方案1】:

    好吧,就像许多人一样,花了几个晚上试图弄清楚这一点,我在放置它后几乎马上就让它工作了。
    问题是当我添加对库项目的引用时,Xcode 将项目本身添加为依赖项,而不是存档文件。这是链接器(显然)找不到符号的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多