1

我将一个 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 中的 objc-class-ref-to-KalDate .a(AViewController.o)
ld:未找到符号
collect2:ld 返回 1 个退出状态

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

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

4

1 回答 1

0

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

于 2010-12-16T20:48:20.087 回答