将框架添加到 Xcode 项目

Posted

技术标签:

【中文标题】将框架添加到 Xcode 项目【英文标题】:Adding frameworks to Xcode project 【发布时间】:2014-06-11 07:14:35 【问题描述】:

我在 xcode 项目中添加了一个框架。在构建阶段-> 将二进制文件与库链接。 该框架由一个库文件(.a 文件)和一个文件夹“Headers”组成,该文件夹包含该框架所需的所有头文件。

现在我正在尝试将框架中的头文件导入我的一个类。

#import <MySDK/MyHeaderFile.h>

但是在构建时出现“找不到符号”错误。

我的理解是,如果我们使用框架而不是库文件,则无需在“头文件搜索路径”中添加头文件路径。

但是,我仍然在标题搜索路径中指定了我的框架的路径。

我还在框架搜索和库搜索路径选项中指定了框架路径。

这是我第一次使用框架。对于库,我刚刚添加了 .a 文件并在头文件搜索路径中指定了头文件的完整路径。

添加框架时我缺少什么配置?

【问题讨论】:

您是否尝试过清洁然后重新构建? 是的。即使我尝试过清理构建文件夹选项。 我知道我还没有回答你的问题,但请查看本教程,最后有一些数据可能会有所帮助raywenderlich.com/41377/… 我曾经经历过你的挫折。 【参考方案1】:

如果它是一个静态库文件和一堆头文件,它就不是一个框架。框架是打包文件的特定方法。在 MacOS X 上,静态和动态框架具有一种结构,而 ios 上的静态框架具有不同的结构。

对于使用 Xcode 5 的静态框架,您的文件结构如下所示:

MySDK.framework/
  en.lproj/
  Headers/
     MyHeaderFile.h
  Info.plist
  MySDK

其中 MySDK 是二进制存档文件(不应是 MySDK.a)。如果你有一个以 .a 结尾的文件,那么你有一个静态库而不是一个框架。使用 Xcode 5 构建静态框架并不容易,但也并非不可能。但是,构建静态库要容易得多且无故障。听起来您已经有了一个静态库,因此您只需使用项目或目标的适当搜索路径设置告诉 Xcode 在哪里可以找到库存档和头文件。

如果/当您确实有框架时,将其添加到“链接库和框架”或将“其他链接器标志”设置为“-framework path/to/MySDK.framework”将正常工作。

较新版本的 Xcode 可能支持不同的功能来构建或使用框架,但是与它们的链接应该大致相同。

【讨论】:

所以我们不能在框架中使用 .a 文件,对吧?为此,我们需要创建二进制存档吗? 二进制存档基本上是一个 .a(存档)文件。静态框架不应该有以 .a 结尾的二进制存档,即使数据本身几乎相同。框架需要特定的文件布局和 Info.plist 数据才能成为框架。根据您的描述,听起来您有一个静态库(libMySDK.a 或类似的东西)而不是一个框架。要使用 Xcode 5 创建静态 iOS 框架,没有模板,并且您需要特定的项目设置(这超出了您的问题范围)。 你是对的,在 xcode 5 中只有创建静态库的选项。但是可以使用早期版本的 xcode 创建框架。可能我需要找出那些特定的项目设置是什么...... 可以使用 Xcode 5 创建静态 iOS 框架。Xcode 5 下的框架存在许多限制,例如您不能将框架目标的产品用作 Xcode 中的依赖项。 【参考方案2】:

MySDK/MyHeaderFile.h :这说明您的库位于 MySDK 文件夹中。检查它是否存在于同一路径中。否则,您将收到“未找到符号”错误。

【讨论】:

以上是关于将框架添加到 Xcode 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何将框架添加到 Xcode 4.3.2 上的项目 [重复]

将 OCUnit 测试框架添加到现有 Xcode 项目时遇到问题

将第三方框架添加到 iOS 应用中的 Xcode 子项目或主项目

使用 CLI 命令或 Ionic 配置将 AdSupport 框架添加到 Xcode 项目

xcode7.0怎么添加使用数据库的框架

在构建时添加框架 - XCode