I want to include Microblink's PDF417 framework into my library. Library project compile and work fine but when I use MyLibrary.a file in my application I've got "undefined symbols for architecture armv7" error. Any ideas? Can I include custom framework to library or this isn't possible.
2 回答
Trojanfoe 的答案对您的情况是正确的。但总的来说,答案取决于框架内库的类型。
iOS/MacOS 框架只是一个库以及所有相关头文件的集合。这使得将库包含到其他项目中变得更加容易,因为可以一次包含整个框架,从而无需修改链接器和标头搜索路径以及链接器标志。
库本身可以是静态库或动态/共享库。框架可以包含任何类型的库,在这方面没有限制。
如果框架中的库是静态的,那么该库中的所有对象都会在编译时复制到目标产品中。如果目标产品是静态库(在您的情况下为MyLibrary.a),则不需要与应用程序中的框架进行额外链接,因为所有对象都包含在MyLibrary.a中
如果框架中的库是动态的,则该库中的对象在加载时或运行时加载,而不是在编译时加载。因此,该类型的框架也需要与最终应用程序链接。
在您的情况下,pdf417 框架包含一个动态库,这意味着您还必须将该框架包含到您的最终应用程序中。
我是 Microblink 的PDF417 SDK的开发人员。问题是,我们可以提供任何格式的库。我们在 Github 存储库中选择的格式是 .embeddedframework,其中包含一个动态库以及所有资源文件,因为这使得将框架包含到应用程序项目中非常简单。如果您有需要不同格式的用例,我们邀请您通过https://help.microblink.com/hc/en-us与我们联系
静态库只是对象文件的集合(有点像没有压缩或层次结构的 zip 文件),不能保存有关它可能具有的任何依赖项的信息。
因此,您必须将最终的可执行二进制文件链接到您的库和依赖框架。如果依赖项是静态库、动态库或框架,这同样适用。