如果您为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 |模拟器)文件夹,在ios one中找到了.a,在模拟器中找到了.o。
答案 0 :(得分:3)
简短的回答是肯定的,你必须用你的静态库打包头文件。您必须将头文件打包到任何库,实际上是动态或静态的。库本身包含已编译的代码,但您仍然必须告诉编译器库中的标识符,因此在编译代码时它知道它们存在。
如果您在意,可以稍微小心地将静态库打包到静态框架中。您只需创建与动态框架相同的目录结构,使用.a文件代替.dylib(或.so)文件。框架包含标头的目录,因此您可以将二进制文件和标题分发为单个包,并且可以轻松地从框架导入标题,而不会弄乱附加标题搜索路径构建设置。
答案 1 :(得分:0)
以防它有用 - 我遵循了来自here的Ray Wenderlich的指示,并且能够为iOS生成一个支持多个架构的框架(包括模拟器)。这些说明有点太长了,不能在这里复制粘贴。