【问题标题】:how to compile spatialite for iOS如何为iOS编译spatialite
【发布时间】:2011-01-25 13:18:49
【问题描述】:

我是新来的,这是我的第一个主题。我在 iOS 平台上非常新,我正在尝试使用 sqlite3 的空间扩展,但我不能这样做。这让我发疯。我不知道如何以及从哪里开始。有人可以给我建议吗?

谢谢。

【问题讨论】:

  • 到目前为止您尝试过什么?我发现了这个,可能会有所帮助:groups.google.com/group/spatialite-users/browse_thread/thread/…
  • 感谢您的回复。我之前看过链接,但我不明白。我只想将空间库添加到我的项目中并加载它。但是,当我尝试使用 .load 'SpatiaLite.dylib' 加载时,它说没有这样的负载。一开始我想要什么?我想将小区域放入数据库中,我可以在该区域离线找到我的位置。
  • iPhone 不支持动态库。您需要构建任何希望包含为静态库的框架。这个问题在这里可能会有所帮助:Compiling custom SQLite for an iPhone app
  • 感谢您的帮助。实际上我了解如何为 iOS 编译。但是,在我正在处理的 mac os 上构建或安装 spatialite 存在问题。再次感谢。

标签: iphone spatialite


【解决方案1】:

我是在 http:// 上共享库的人 ;-) 我在简化 iOS 空间item 的集成方面取得了一些不错的进展。 现在我能够构建一个完全独立的spatialite 静态库(2.3.1 嵌入了所需的 GEOS 和 PROJ,因此不必使用它们)。

只需下载 zip http://lionel.gueganton.free.fr/spatialite/spatialite2.3.1.zip,您将获得用于 x86 和 arm + 标头的 .a,以便您可以直接使用这些标头中的 spatialite 接口。

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

您的控制台日志中应显示以下内容:

SpatiaLite version ..: 2.3.1    Supported Extensions:
    - 'VirtualShape'    [direct Shapefile access]
    - 'VirtualText      [direct CSV/TXT access]
    - 'VirtualNetwork   [Dijkstra shortest path]
    - 'RTree'       [Spatial Index - R*Tree]
    - 'MbrCache'        [Spatial Index - MBR cache]
    - 'VirtualFDO'      [FDO-OGR interoperability]
    - 'SpatiaLite'      [Spatial SQL - OGC]
PROJ.4 version ......: Rel. 4.6.1, 21 August 2008
GEOS version ........: 3.1.1-CAPI-1.6.0

【讨论】:

  • 很多,很多,感谢这个 yonel,我几乎因为收到这个答案的分数而感到内疚:-(。当然,我会拿一份你的二进制文件。再次感谢。
  • 把我的积分还给我! ;) 我在开玩笑 :) 如果您有机会尝试一下,我对您的反馈非常感兴趣。正如 Vlad 在回答中所说,您必须将 stdlib++.dylib 添加到 Xcode 项目中,因为 GEOS(它是 .a 的一部分)是使用 std lib 的 C++ 代码。干杯!
  • 为什么二进制文件这么大:80MB .a 文件?我用 NDK here 为 Android 编译了 Spatialite,它低于 7 MB,小了 10 倍以上。
  • 好的,我现在明白为什么它这么大了。它包括整个 GEOS(还有 Spatialite 不使用的功能,也许可以通过一些开关排除?),以及所有内容的两个副本,因为它是胖库(armv6 和 armv7)。最终的应用程序构建将得到优化,只需几 MB 的开销。
  • 嗯,从那篇帖子开始,spatialite 已经进化了。 3.0.0 版本已经发布了一段时间,所以我建议您查看这个版本。此外,您为什么要在没有 PROJ 和 GEOS 的情况下拥有它?如果没有这两个项目,您将不会从 spaceite 中获得太多收益,对吗?
【解决方案2】:

卷起来,卷起来,趁热吃!

各位高手,Google-fu在这方面很强!

不能说是我写的(我确实计划为 iPhone SQLite 和 Spatialite 提供 CMake 脚本,很快就会实现),但我建议你自己动手转到this site,在 404 之前:

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

去下载一些好东西,包括预编译的 Spatialite + extensions 2.3.1 二进制文件!!!。

有一个 SQLite-on-OSX Cmake script(最初发现 here),可能只需很少的工作,就可以在 SQLite-iPhone 构建中重新定位(我会做的,只要我有时间) .这应该允许您使用最新的 SQLite 版本(我读过 Apple 包含的版本略有残缺)。然后,假设您只需要以本地方式引用 new 头文件,即使用引号

(例如“sqllitexxx.h”)

而不是使用尖括号:

()

那么,我能得到那些有趣的分数吗 ;-) ?

干杯

大富翁

【讨论】:

    【解决方案3】:

    只需 3 个简单步骤即可使用适用于 iOS 的 Spatialite:

    1. https://github.com/gstf/libspatialite-ios 获取 Makefile 和补丁
    2. 输入 make
    3. 没有第3步

    感谢 Gustaf Lindqvist 提供此功能!

    【讨论】:

      【解决方案4】:

      您可能需要编译为 armv7 目标(优化构建),您还应该与 stdlib++.dylib 链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 2022-06-29
        • 2020-02-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-19
        • 2012-06-11
        相关资源
        最近更新 更多