2010-12-01 35 views
7

如果您为iOS创建一个静态库,您是否必须使用它来分发头文件,或者有另一种方法来使它工作?为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)文件夹,并在模拟器中找到了.a和i.o中的.o。

回答

3

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

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

+0

感谢您的信息亚当。据我了解(以及我所搜索的),开发者不允许为iOS创建框架。这不再是如此,如果是这样,你有没有关于如何创建这个框架的资源?最后,我正确地创建我的通用库吗?我只问,因为我使用的指南(第二链接)没有提及.o文件。 – Aaron 2010-12-02 16:02:57

0

为了防万一它很有用 - 我遵循了Ray Wenderlich的here指令,并且能够生成支持多种体系结构(包括模拟器)的iOS框架。说明有点太长,只能在这里复制粘贴。