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

时间:2011-12-02 18:09:03

标签: ios static spatialite

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

有一个前一个帖子how to compile spatialite for iOS,其中最顶层的答案部分描述了将spatialite建设为iOS的静态库。答案包括文字:

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

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

Xcode 4

  1. 文件 - >新 - >新目标 - > iOS->框架&图书馆 - > Cocoa Touch静态图书馆

  2. 将库命名为libSpatialite_TedS

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

    < / LI>
  4. 拖动'.a文件'libSPATIALITE2.3.1_arm.a&amp; libSPATIALITE2.3.1_x86.a

  5. 我们不应该在“编译源”字段中使用这些标题的“.m”文件吗?

  6. 现在,在我的项目中没有引用libSpatialite_TedS的情况下,当我'Command-B'构建时,项目构建成功。但是,当我在

    中查找已编译的产品时
      

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

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

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

    而且,这是实现原始海报how to compile spatialite for iOS目标的正确方法吗?

    非常感谢, 特德S

2 个答案:

答案 0 :(得分:3)

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

希望这有帮助!

答案 1 :(得分:2)

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

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

还有一些关于静态库文件的内容:

What is a .a (as libcrypto.a) file?

<强> EDITED

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