【问题标题】:Including one Xcode project in another -- linker errors在另一个项目中包含一个 Xcode 项目——链接器错误
【发布时间】:2010-12-25 02:52:30
【问题描述】:

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: xcode ios linker-errors common-code


    【解决方案1】:

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

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

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

    更新:

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

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

    【讨论】:

    • 它不是静态库。 . .我首先尝试过,但在遇到很多链接器问题后放弃了。
    • 好的,试试看。 . .见this question
    【解决方案2】:

    您可能缺少一个框架。不过,从您在此处发布的内容中无法判断。

    【讨论】:

    • 我应该发布哪些附加信息以使其清楚?如果我缺少一个框架。 . .来自父项目还是子项目?
    【解决方案3】:

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

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

    单击您的目标->构建阶段并进行设置。

    【讨论】:

      【解决方案4】:

      未定义的符号

      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 询问时按 Create Bridging Header

      【讨论】:

        猜你喜欢
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 2019-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多