为iOS构建静态库 – 特别是spaceite

首先,请原谅并指出我是否要使用其他协议来引用另一个post/post。

有一个先前的线程如何为iOS编译spatialite,其中最顶层的答案部分描述了将spatialite建立为iOS的静态库。 答案包括案文:

“一旦你拖动了.a(两者都需要在模拟器和真实硬件上工作),你可以通过调用spatialite_init(1)来初始化spatialite。”

我猜这是翻译成以下的某些版本?

Xcode 4

  1. 文件 – >新建 – >新目标 – > iOS->框架和库 – > Cocoa Touch静态库

  2. 命名库 – libSpatialite_TedS

  3. 将头文件拖到libSpatialite_TedS – > Copy Headers(这里有问题……’spatialite2.3.1.zip’下载的’headers’目录中有一个spatialite.h文件。然后在子目录’spatialite’中有另一个spatialite.h不是一个相同的文件,显然是需要的。我们只是从’headers’目录中拖动头文件,然后将目录’spatialite’作为目录拖到我们的Xcode静态库’myNewLibrary’的’Copy Headers’区域“?)

  4. 拖动’.a文件’libSPATIALITE2.3.1_arm.a和libSPATIALITE2.3.1_x86.a

  5. 我们不应该在’Compile Sources’字段中有一些’.m’文件与这些标题一起使用吗?

现在,在我的项目中没有引用libSpatialite_TedS情况下,当我’Command-B’构建时,项目构建成功。 但是,当我在寻找编译产品时

/用户/管理员/库/开发商/ Xcode中/ DerivedData / MyProject的-gutnkbwqqonzgxbcmfzzzkadqhid /编译/产品/释放,iphonesimulator

我看到了build的产品,但它们不包含libSpatialite_TedS。

这是因为编译器是“智能的”并且认识到项目中没有引用任何头文件/ .a文件所以它不打算编译它们吗?

而且,这是实现原始海报的目标如何为iOS编译空间网格的正确方法吗?

非常感谢,Ted S.

我也遇到了原始海报中的链接器错误,但是通过在目标中包含libsqlite3.dylib,libstc ++。dylib和libiconv.dylib来解决它。

希望这可以帮助!

Ted,我相信.a(静态库)文件和头文件应该立即在项目中使用,而不是像你所描述的那样在另一个静态库中使用。 它们是项目输出的结果。 我想你可以找到构建它们的项目,在这里:

http://lionel.gueganton.free.fr/spatialite/

还有一些静态库文件:

什么是.a(如libcrypto.a)文件?

EDITED

这是您可能会发现有用的另一个链接。 它是iOS中静态库构建过程的摘要: http : //www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/