【发布时间】: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