在另一个包含一个Xcode项目 – 链接器错误

我正试图做到这一点,并遇到问题。 父项目需要从子项目访问类SettingsViewController。 我已经把我的标题searchpath中的子项目path。 一切都编译好,但我得到链接器错误,如下所示:

未定义的符号:“_OBJC_METACLASS _ $ _ SettingsViewController”,引用来自:_OBJC_METACLASS __ StatisticsViewController.o中的StatisticsViewController“_OBJC_CLASS _ $ _ SettingsViewController”,引用来自:SelectionViewController.o中的objc-class-ref-to-SettingsViewController _OBJC_CLASS _ $ _ St​​atisticsViewController.o中的StatisticsViewController ld:符号(s)not found collect2:ld返回1退出状态

我怎样才能解决这个问题?

我假设子项目是一个静态库。 目前,您的父项目知道如何find子项目的头文件(否则它不会编译),但它不知道它必须链接到子项目的库(.a)文件。

您可能应该将库文件添加到目标> {您的应用程序}>链接二进制与库 。 此外,您可能需要添加链接器标志-all_load和可能的-all_load

在网上有很多详细的描述,比如用Xcode编译iPhone静态库 。

更新:

如果它不是一个静态库,那么这是一个相当奇怪的项目设置。 您可以做的最好的事情是将共享文件(.h和.m)添加到这两个项目。 然后他们将在两个项目中独立编译。 这应该工作,如果你有很less的共享文件。

但我build议使用静态库的项目设置。 如果你正确地设置它,它会很好地工作。 我正在成功使用它。 而且 – 正如我以前告诉过的那样 – 在网上有几个很好的描述如何设置。

你可能会错过一个框架。 虽然不能从你在这里发布的内容中分辨出来。

我知道这是非常古老的,但可能对别人有帮助。

您需要在“构build阶段”中设置目标依赖关系中包含的项目,以便编译包含的项目,还应该在“链接库”链接中添加项目的静态库。

点击你的Target-> Build Phases并设置它们。

Interesting Posts