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

标签 xcode ios linker-errors common-code

我正在尝试这样做,但遇到了问题。父项目需要从子项目访问类 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/

相关文章:

ios - 使用 UserDefaults 设置全局变量

C++ 链接器错误 : undefined reference to a static function

linker-errors - 在 OS/X 上链接 Gecode

ios - Xcode 是否支持 git rebase?

Xcode:调整自动生成的大括号的缩进?

ios - 刷新 TableView iphone

c++ - VS2010下ODBC拒绝静态链接libcmt.lib

ios - UIWebView IBOutlet 连接问题

ios - 错误 ITMS-90046 : Invalid Code Signing Entitlements for embedded frameworks from cocoapods

ios - 各种AVAssetExportPreset之间的区别