将C库编译为iPhone框架?

时间:2011-03-17 15:06:49

标签: iphone c xcode frameworks

每个C / C ++库都有一些应该与该库一起使用的标头。如果你使用超过1-2个库,自定义标题路径是一件令人头疼的事。

所以我想:有没有办法将C库编译为框架。静态库+标题+版本控制。

我在XCode模板中找到了Cocoa框架,但没有关于iPhone框架构建。这个简单的步骤可以允许开发人员使用一些有趣的代码在彼此的框架之间进行构建和共享。

使用libpng,libjpeg和其他打包为框架的库也会很棒。

我不会在这些框架中使用动态库。只会出现静态版本。

3 个答案:

答案 0 :(得分:5)

我将herehere的技术结合到我的开源库here中(注意 - 我已经从此项目中删除了相关脚本。我已更新链接以指向包含这些技术的最新修订版。)。认为这基本上是你正在寻找的解决方案。

基本上,它有一个目标,它将构建一个胖的静态库(arm6,arm7和i386的lipo构建)。它有另一个目标,它接受该库并将其构建到框架中。

没有理由不能为C项目使用相同的技术。事实上,我已经开始使用相同的技术将C the VTD XML parser移植到Objective C框架。

答案 1 :(得分:2)

框架基本上只是动态/共享库的捆绑。由于App Store中不允许这样做,因此您必须构建静态库并在编译时将它们与App的可执行文件链接。

但是,为了减轻痛苦,您可以为每个库创建一个Xcode项目,并将每个库编译为静态库。另一种方法是将所有必需的源文件放入主Xcode项目并对其进行适当配置,以便一次性构建(我使用Minizip等小型库完成此操作)。

希望有所帮助。

答案 2 :(得分:1)

您尝试制作的问题已经存在 - 它被称为DLL hell

最好的方法是在制作小型应用程序和组织源/头结构时坚持使用普通的旧静态库