【发布时间】:2014-04-04 00:59:09
【问题描述】:
我正在构建一个静态库以分发给其他 iOS 开发人员,但在配置链接器以允许在另一个应用程序中使用该静态库时遇到了一些问题。我使用this guide 创建了一个 MyStaticLibrary.framework 包,其中包含 lib 本身以及其他资产(例如图像)。这成功构建并使用 cocoapods 获取所需的依赖项(AFNetworking 等)。到目前为止,一切顺利。
但是当我将 MyStaticLibrary.framework 导入新的 Xcode 项目以测试使用该库构建应用程序时,我收到大量链接器错误(架构 i386 的未定义符号,_OBJC_CLASS_$_CLASSNAME),表明我做错了什么在这里。
所以我的问题是,如何使用来自 cocoapods 的依赖项构建 MyStaticLibrary.framework,以便我可以仅向第三方提供我的框架文件并允许他们访问公共标头中指定的所有功能?
【问题讨论】:
-
检查你的项目的构建设置,在“框架搜索路径”下,它应该包括你的 .framework 所在的目录。如果没有这个设置,链接器将找不到你的静态二进制文件
-
@michaels 带有框架的目录包含在搜索路径中。这不是我遇到的问题,因为 Xcode 正在从我的框架中找到标头(即:它编译得很好,它只是在链接阶段失败)问题似乎是在构建框架时链接的任何文件在构建导入框架的测试应用程序时也需要链接。但是,这些文件不包含在框架中,我不知道如何包含它们。
-
查找头文件和查找二进制文件是不同的事情,它们需要不同的构建设置。但我想我现在更好地理解了这个问题 - 您正在链接到未编译到您的二进制文件中的第三方库?
-
@michaels 没错,其中一些第三方库是通过 cocoapods 分发的。此外,其中一些 3rd 方库我有源文件,但其他库是它们自己的静态库。我想将所有这些编译到我的二进制文件中,但我不确定如何配置我的静态库目标来完成此操作。
标签: objective-c xcode static-libraries cocoapods