为iOS构建静态库 – 特别是spaceite
首先,请原谅并指出我是否要使用其他协议来引用另一个post/post。
有一个先前的线程如何为iOS编译spatialite,其中最顶层的答案部分描述了将spatialite建立为iOS的静态库。 答案包括案文:
“一旦你拖动了.a(两者都需要在模拟器和真实硬件上工作),你可以通过调用spatialite_init(1)
来初始化spatialite。”
我猜这是翻译成以下的某些版本?
Xcode 4
-
文件 – >新建 – >新目标 – > iOS->框架和库 – > Cocoa Touch静态库
-
命名库 – libSpatialite_TedS
-
将头文件拖到libSpatialite_TedS – > Copy Headers(这里有问题……’spatialite2.3.1.zip’下载的’headers’目录中有一个spatialite.h文件。然后在子目录’spatialite’中有另一个spatialite.h不是一个相同的文件,显然是需要的。我们只是从’headers’目录中拖动头文件,然后将目录’spatialite’作为目录拖到我们的Xcode静态库’myNewLibrary’的’Copy Headers’区域“?)
-
拖动’.a文件’libSPATIALITE2.3.1_arm.a和libSPATIALITE2.3.1_x86.a
-
我们不应该在’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/