我正在将一个Xcode iPhone项目拆分成多个较小的项目,以便重用代码。 结构如下所示:
+------------+
| App |
+------------+
|
+------------------+
| |
+--------------+ +--------------+
| Static Lib A | | Static Lib B |
+--------------+ +--------------+
| |
+----------------+
|
+--------------+ +----------------+
| Static Lib Z |--| Static Lib KAL |
+--------------+ +----------------+
一切都正确编译,但是一旦链接了应用程序,链接器就找不到KAL(开源日历库)库的2个符号。 每个库都有一个交叉引用,所有存档都被添加到“使用库链接二进制”构建阶段。
错误是:
未定义的符号:
“_OBJC_CLASS _ $ _ KalViewController”,引自:
libA.a中的objc-class-ref-to-KalViewController(AViewController.o)
“_OBJC_CLASS _ $ _ KalDate”,引自:
libA.a中的objc-class-ref-to-KalDate(AViewController.o)
ld:未找到符号
collect2:ld返回1退出状态
我在LibA的AViewController中使用LibZ中的一个类,而AViewController又在LibKAL中使用了一个类。
PS:A和B的分离仅仅是因为并非每个构建的App都需要两者提供的功能。
答案 0 :(得分:0)
好的,就像很多人一样,花了几个晚上试图解决这个问题,我设法在放置它之后几乎立即开始工作。
问题是,当我添加对库项目的引用时,Xcode将项目本身作为依赖项而不是归档文件。这是链接器的原因(显然)没有找到符号。