【问题标题】:Swift project with cocoapods new errors when watchkit added添加 watchkit 时带有 cocoapods 的 Swift 项目出现新错误
【发布时间】:2015-06-30 00:53:47
【问题描述】:

我有一个使用 Objective C SDK 的 Swift IOS 项目。 SDK 代码使用 cocoapods 安装和更新。 Swift 项目中有一个桥接头文件。该项目经过多次编译运行,完全可以运行。当然,既然已经构建并运行了,那么工作区文件就是它的打开方式……

我为它添加了一个 watchkit 扩展。我运行 pod update 来创建一个新的锁定文件。我确认 watchkit 中的搜索路径包括 pods/recursive。我在Watchkit Extension中添加了头文件。

这三个步骤是我能找到的关于使 cocoapods 托管代码与 Watchkit 一起工作的唯一建议。

我得到三个错误。他们是:

Undefined symbols for architecture x86_64:

  "_OBJC_CLASS_$_SparkCloud", referenced from:
      __TMaCSo10SparkCloud in InterfaceController.o

  "_OBJC_CLASS_$_SparkDevice", referenced from:
      __TMaCSo11SparkDevice in InterfaceController.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

是否有人对可能允许项目编译的进一步步骤提出建议?

【问题讨论】:

    标签: ios swift cocoapods watchkit


    【解决方案1】:

    如问题中所述,此 Swift IOS 项目使用 cocoapods 来管理提供对 Cloud API 的访问的客观 C SDK。

    将 WatchKit 扩展添加到 Xcode 项目后执行这些步骤。

    在项目主文件夹(蓝色,顶部)的 Info 选项卡中,请注意在 Debug 部分中,WatchKit Extension 旁边有一个 None 条目。将此更改为 Pods.debug。单击它并选择 Pods.debug。

    在 Release 部分下,将 WatchKit Extension 从 None 更改为 Pods.release

    现在点击 WatchKit Extension Target 并选择 General 标签。此处链接的框架和库将为空。单击加号并从列表 libPods.a 中选择并添加它,确保选择了必需选项(右侧)。

    这应该完成让您的 cocoapods 库可访问 WatchKit 扩展下的 InterfaceController.swift 文件的工作,您可以在该文件中编写“运行”手表的代码。

    【讨论】:

      【解决方案2】:

      您的项目中似乎缺少 SparkCloud.framework。您可以通过以下方式添加它:

      • 单击左窗格左上角的项目(蓝色图标)。

      • 导航到“构建阶段”。

      • 在“将二进制文件与库链接”下,单击加号按钮。

      • 从列表中找到 SparkCloud.framework 并点击添加。您可能还想添加 Spark SDK 所需的任何其他框架。

      This will ensure that the Spark frameworks are found by the linker.

      • 单击构建,错误应该会消失。

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多