2011-12-02 47 views
3

首先,请原谅并指出是否要使用其他协议来引用另一个线程/帖子。为iOS创建静态库 - 特别是空间

有一个前面的线程how to compile spatialite for iOS其中最重要的答案部分描述了将spatialite构建为iOS的静态库。答案包括以下内容:

“拖动n拖放.a(都需要在模拟器和真实硬件中工作),您可以通过调用spatialite_init(1)来初始化spatialite。”

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

的Xcode 4

  1. 文件 - >新建 - >新靶> iOS->框架&图书馆 - >可可触摸静态库

  2. 名称库 - libSpatialite_TedS

  3. 将头文件拖到libSpatialite_TedS - >复制头文件(这里的问题是...“spatialite2.3.1.zip”的'头文件'目录中有一个spatialite.h文件,然后在子目录'spatialite'中有另一个文件小号patialite.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,当我“命令B”来构建,项目构建成功。然而,当我寻找编译产品中

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

我看到构建的产品,但它们不包含libSpatialite_TedS。

这是因为编译器是'聪明的',并且认识到项目中没有引用任何头文件/ .a文件,所以它不会编译它们?

而且,这是正确的方式去实现原来的海报how to compile spatialite for iOS的目标?

非常感谢, 特德小号

回答

3

我也陷入了与原来的海报链接错误了,但由于包括libsqlite3.dylib解决它,libstC++。dylib,并libiconv.dylib目标。

希望这会有所帮助!

2

特德,我相信了。(静态库)文件和头文件是为了立即在项目中使用,而不是像您所描述的那样在另一个静态库中使用。它们是项目产出的结果。我想,你可以发现,建立了他们的项目,在这里:

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/