我正在尝试这样做,并遇到问题。父项目需要从子项目访问类SettingsViewController。我已将子项目路径放入标题搜索路径中。一切都编译好,但我得到链接器错误,如下所示:
未定义的符号:“_ OBJC_METACLASS _ $ _ SettingsViewController”, 引自: _OBJC_METACLASS _ $ _ StatisticsViewController.o中的StatisticsViewController“_OBJC_CLASS _ $ _ SettingsViewController”, 引自: SelectionViewController.o中的objc-class-ref-to-SettingsViewController StatisticsViewController.o中的_OBJC_CLASS _ $ _ StatisticsViewController ld:未找到符号collect2:ld 返回1退出状态
我该如何解决这个问题?
答案 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