我正在尝试这样做,但遇到了问题。父项目需要从子项目访问类 SettingsViewController。我已将子项目路径放入我的标题搜索路径中。一切都编译正常,但我收到链接器错误,如下所示:
Undefined symbols: "_OBJC_METACLASS_$_SettingsViewController", referenced from: _OBJC_METACLASS_$_StatisticsViewController in StatisticsViewController.o "_OBJC_CLASS_$_SettingsViewController", referenced from: objc-class-ref-to-SettingsViewController in SelectionViewController.o _OBJC_CLASS_$_StatisticsViewController in StatisticsViewController.o ld: symbol(s) not found collect2: ld returned 1 exit status
我该如何解决这个问题?
最佳答案
我假设子项目是一个静态库。目前,你的父项目知道如何找到子项目的头文件(否则它不会编译),但它不知道它必须链接到子项目的库(.a)文件。
您应该将库文件添加到 Targets > {your app} > Link Binary with Libraries。此外,您可能需要添加链接器标志 -ObjC
和可能的 -all_load
。
网上有很多详细的描述,例如Build iPhone static library with Xcode .
更新:
如果它不是一个静态库,那么它就是一个相当奇怪的项目设置。最好的办法是将共享文件(.h 和 .m)添加到两个项目中。然后它们将在两个项目中独立编译。如果您的共享文件很少,那应该可行。
但我还是建议使用带有静态库的项目设置。如果您正确设置它,它会很好地工作。我成功地使用了它。而且 - 正如我之前所说 - 网上有一些关于如何设置它的很好的描述。
关于xcode - 将一个 Xcode 项目包含在另一个项目中——链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529133/