【问题标题】:linking custom framework to library in xcode将自定义框架链接到 xcode 中的库
【发布时间】:2014-09-04 11:00:22
【问题描述】:

我想将Microblink's PDF417 框架包含到我的库中。库项目编译和工作正常,但是当我在我的应用程序中使用 MyLibrary.a 文件时,出现“架构 armv7 的未定义符号”错误。有任何想法吗?我可以将自定义框架包含到库中吗,否则这是不可能的。

【问题讨论】:

    标签: ios xcode frameworks static-libraries microblink


    【解决方案1】:

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

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

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

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

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

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


    我是 Microblink 的 PDF417 SDK 的开发人员。问题是,我们可以提供任何格式的库。我们在 Github 存储库中选择的格式是 .embeddedframework,其中包含一个动态库以及所有资源文件,因为这使得将框架包含到应用程序项目中非常简单。如果您有需要不同格式的用例,我们邀请您通过https://help.microblink.com/hc/en-us与我们联系

    【讨论】:

      【解决方案2】:

      静态库只是对象文件的集合(有点像没有压缩或层次结构的 zip 文件),不能保存有关它可能具有的任何依赖项的信息。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 1970-01-01
        • 1970-01-01
        • 2016-03-13
        • 2017-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多