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

时间:2010-12-25 02:52:30

标签: xcode ios linker-errors common-code

我正在尝试这样做,并遇到问题。父项目需要从子项目访问类SettingsViewController。我已将子项目路径放入标题搜索路径中。一切都编译好,但我得到链接器错误,如下所示:

  

未定义的符号:“_ OBJC_METACLASS _ $ _ SettingsViewController”,   引自:         _OBJC_METACLASS _ $ _ St​​atisticsViewController.o中的StatisticsViewController“_OBJC_CLASS _ $ _ SettingsViewController”,   引自:         SelectionViewController.o中的objc-class-ref-to-SettingsViewController         StatisticsViewController.o中的_OBJC_CLASS _ $ _ St​​atisticsViewController ld:未找到符号collect2:ld   返回1退出状态

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

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

您应该将库文件添加到目标> {your app}>链接二进制文件与库。此外,您可能需要添加链接器标志-ObjC以及可能-all_load

网上有许多详细说明,例如: Build iPhone static library with Xcode

<强>更新

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

但我仍然建议使用带有静态库的项目设置。如果你正确设置它很好。我成功地使用它了。并且 - 正如我之前所说的 - 在网上有几个很好的描述如何设置它。

答案 1 :(得分:0)

您可能错过了一个框架。但是不能确定你在这里发布的内容。

答案 2 :(得分:0)

我知道这很老,但可能对其他人有帮助。

您需要在“构建阶段”中设置目标依赖项中包含的项目,以便编译所包含的项目,并且还应该在“链接二进制文件库”中添加所包含项目的静态库。

点击你的Target-&gt; Build Phases并设置它们。

答案 3 :(得分:0)

Undefined symbols是链接器错误

1。检查是否添加了库或框架

Project editor -> select a target -> General -> Linked Frameworks and Libraries
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries

2。如果您尝试使用Objective-C中的Swift代码

将空的.swift文件添加到Objective-C项目。当Xcode询问时,按创建Bridging Header