在xcode中将自定义框架链接到库

时间:2014-09-04 11:00:23

标签: ios xcode frameworks static-libraries

我想在我的库中加入photoPay 417框架。库项目编译和工作正常,但是当我在我的应用程序中使用MyLibrary.a文件时,我已经获得了未定义的符号,用于架构armv7"错误。有任何想法吗?我可以将自定义框架包含到库中,或者这是不可能的。

2 个答案:

答案 0 :(得分:1)

Trojanfoe的回答对你的案子是正确的。但总的来说,答案取决于框架内库的类型。

iOS / MacOS框架只是一个库的集合以及所有相关的头文件。这使得将库包含到其他项目中变得更加容易,因为可以立即包含整个框架,从而无需修改链接器和头搜索路径以及链接器标记。

库本身可以是静态库,也可以是动态/共享库。框架可以包含任何类型的库,在这方面没有限制。

如果框架中的库是静态的,那么该库中的所有对象都将在编译时复制到目标产品中。如果目标产品是静态库(在您的情况下为 MyLibrary.a ),则不需要与应用程序中的框架进行其他链接,因为所有对象都包含在 MyLibrary.a中< / em>的

如果框架中的库是动态的,则来自该库的对象在加载时或运行时加载,而不是在编译时加载。因此,该类型的框架也需要与最终应用程序链接。

在您的情况下,pdf417框架包含一个动态库,这意味着您还必须将该框架包含在最终应用程序中。


我是pdf417.mobi产品的开发人员。问题是,我们可以以任何格式提供我们的库。我们在Github存储库中选择的格式是.embeddedframework,它包含一个动态库以及所有资源文件,因为这使得将框架包含到Application项目中非常简单。如果您的用例需要不同的格式,我们邀请您通过www.pdf417.mobi/#support

与我们联系

答案 1 :(得分:0)

静态库只是一个目标文件的集合(有点像没有压缩或层次结构的zip文件),并且无法保存有关它可能具有的任何依赖项的信息。

因此,您必须将最终的可执行二进制文件链接到库和依赖框架。如果依赖项是静态库,动态库或框架,则同样适用。