objective-c - 为 iOS 和模拟器创建一个静态库以供分发

标签 objective-c ios static static-libraries

如果您为 iOS 创建一个静态库,您是否必须随它一起分发头文件,或者是否有其他方法让它工作?

目前我有一个用于设备和模拟器的 my_lib.a 文件,但是当我将它拖到另一个测试应用程序中使用它时,它说它找不到标题以及我在其中使用它的所有地方代码未声明。所以我想我要么做错了什么,要么我还必须发送相应的头文件。

我的过程背景:

我看过两个为设备和模拟器创建静态库的指南。本网站上的一个:Build fat static library (device + simulator) using Xcode and SDK 4+

还有一个:http://mark.aufflick.com/blog/2010/11/19/making-a-fat-static-library-for-ios-device-and-simulator

我使用第二个站点来尝试一下。如果我做对了,我也有点好奇。我刚进入 Release-iphone(os|simulator) 文件夹,在 ios 文件夹中找到 .a,在模拟器文件夹中找到 .o。

最佳答案

简短的回答是肯定的,您必须将头文件与您的静态库一起打包。实际上,您必须将头文件与任何库一起打包,无论是动态的还是静态的。库本身包含编译后的代码,但您仍然必须将库中的标识符告知编译器,以便在编译您的代码时知道它们存在。

如果您愿意,可以稍微小心地将您的静态库打包到静态框架中。您只需创建与动态框架相同的目录结构,用您的 .a 文件代替 .dylib(或 .so)文件。框架包含一个 header 目录,因此您可以将二进制文件和 header 作为一个包分发,并且您可以轻松地从框架导入 header ,而不会弄乱其他 header 搜索路径build设置。

关于objective-c - 为 iOS 和模拟器创建一个静态库以供分发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4330020/

相关文章:

objective-c - 直接从代码创建NSView

ios隐藏状态栏后向下移动ui View

c - 初始化静态多维空终止数组

ios - 如何在 UIScrollView 中将图像彼此相邻放置?

objective-c - startAccessingSecurityScopedResource 从不返回成功

ios - Swift - UITableView editActionsForRowAtIndexPath 在单击编辑时打开 UIPresentationController

ios - fatal error : unexpectedly found nil while unwrapping an Optional value (lldb)

java - 全局访问变量 (Java)

java - 从外部类调用方法时 Eclipse 声明错误

objective-c - alloc 初始化一个属性两次会导致 ARC Objective C 中的内存泄漏吗?