我想将Microlink的PDF417框架包含到我的库中。库项目编译并运行良好,但当我在应用程序中使用MyLibrary.a文件时,我遇到了"架构armv7的未定义符号"错误。有什么想法吗?我可以将自定义框架包括到库中吗?否则这是不可能的。
Trojanfoe的答案对您的情况是正确的。但总的来说,答案取决于框架内的库的类型。
iOS/AcOS框架只是一个库与所有相关头文件的集合。这使得将库包含到其他项目中变得更加容易,因为可以同时包含整个框架,从而无需修改链接器和标头搜索路径以及链接器标志。
库本身可以是静态库,也可以是动态/共享库。框架可以包含任何类型的库,在这方面没有任何限制。
如果框架中的库是静态的,那么该库中的所有对象都会在编译时复制到目标产品中。如果目标产品是静态库(在您的情况下为MyLibrary.a),则不需要与应用程序中的框架进行额外链接,因为所有对象都包含在MyLibrary.a中
如果框架中的库是动态的,那么该库中的对象将在加载时或运行时加载,而不是在编译时加载。正因为如此,这种类型的框架也需要与最终应用程序链接。
在您的案例中,pdf417框架包含一个动态库,这意味着您还必须将该框架包含到您的最终应用程序中。
我是微链接PDF417 SDK的开发者。问题是,我们可以提供任何格式的图书馆。我们在Github存储库中选择的格式是.embeddedframework,它包含一个动态库和所有资源文件,因为这使得将框架包含在应用程序项目中变得非常简单。如果您有需要不同格式的用例,我们邀请您通过https://help.microblink.com/hc/en-us
静态库只是对象文件的集合(有点像没有压缩或层次结构的zip文件),不能保存它可能具有的任何依赖关系的信息。
因此,您必须将最终的可执行二进制文件链接到您的库和依赖框架。如果依赖项是静态库、动态库或框架,则同样适用。