2

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

未定义的符号:“_OBJC_METACLASS_$_SettingsViewController”,引用自:StatisticsViewController.o 中的 _OBJC_METACLASS_$_StatisticsViewController “_OBJC_CLASS_$_SettingsViewController”,引用自:SelectionViewController.o 中的 objc-class-ref-to-SettingsViewController _OBJC_CLASS_$_StatisticsViewController 在 StatisticsViewController.o ld 中:未找到符号 collect2:ld 返回 1 个退出状态

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

4

4 回答 4

2

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

您可能应该将库文件添加到Targets > {your app} > Link Binary with Libraries。此外,您可能需要添加链接器标志-ObjC,并且可能需要添加-all_load.

网上有很多详细的描述,例如Build iPhone static library with Xcode

更新:

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

但我还是建议使用带有静态库的项目设置。如果您正确设置它,它会很好地工作。我正在成功使用它。而且 - 正如我之前所说 - 网上有几个很好的描述如何设置它。

于 2010-12-25T10:38:00.233 回答
0

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

您需要在“Build Phases”的 Target Dependencies 中设置包含的项目以编译包含的项目,并且您还应该在“Link Binary with Libraries”中添加包含的项目的静态库。

单击您的 Target->Build Phases 并进行设置。

于 2012-06-10T16:26:28.767 回答
0

您可能缺少一个框架。虽然不能从你在这里发布的内容中真正看出。

于 2010-12-25T03:28:35.407 回答
0

未定义的符号

Undefined symbols是链接器错误

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

Project editor -> select a target -> General -> Frameworks, Libraries, and Embedded Content(Linked Frameworks and Libraries)
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries

2.如果你尝试使用来自 Objective-C 的 Swift 代码

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

于 2019-08-17T17:09:48.620 回答