我将一个 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 都需要两者提供的功能。