【问题标题】:libsqlite in simulator and iOS compiling模拟器中的 libsqlite 和 iOS 编译
【发布时间】:2011-11-29 04:08:39
【问题描述】:

我在将我的应用程序编译到 iOS 时遇到了一些问题。 我正在使用 sqlite3 并导入为

#import <sqlite3.h>

好吧,我只在我的 Mac 中找到了一个名为 libsqlite3.0.dylib 的文件,并将其复制到我的项目中。 当我为 iOS 模拟器编译它时,它工作得很好。但是,当我尝试为 iOS 设备编译应用程序时,它在我对 sqlite 的函数(例如 _sqlite3_open 等)的每次调用中都会引发错误(Apple Match-O Linker Error)

如何编译到 iOS 设备?

谢谢!

【问题讨论】:

    标签: ios compilation sqlite


    【解决方案1】:

    不要简单地复制库,而是这样做:

    • 在 Xcode Navigator 中,单击您的目标(最上面的条目)

    • 转到Build Phases,然后转到Link Binary With Libraries

    • 从位于/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOSxx.sdk/usr/lib/的位置添加libsqlite3.dylib

    【讨论】:

    • 好的,它已根据您的提示编译!谢谢!!但是,该应用程序在 iPhone 中无法运行,一旦它调用使用 sqlite3 库的方法,它就会中断并关闭该应用程序。在模拟器中工作正常......为什么会这样?任何想法?嗯...我从 Xcode 4.1 显示的默认文件夹中添加了 libsqlite3.dylib..
    • 在设备上你应该得到一个崩溃日志(Organizer => Devices => Device Log)
    • 嗨,奥特。好吧,我买不起开发者许可证,我开始在这个 iOS 编程世界中作为一种爱好,作为一名学生,这对我来说是不可能的。我希望你明白。你知道为什么这会导致崩溃吗?它编译但不工作......再次感谢
    • 没有源代码我不能说太多。您可以将该方法放到 pastebin.com 或类似网站上,然后告诉我网址。
    • 对于 XCode 4.6,它位于:Project > Build Settings > Linking > Other Linker Flags,值为“-lsqlite3”
    【解决方案2】:

    以防万一有人遇到和我一样的问题。如果您要对代码进行单元测试,请将 lib 文件也添加到您的测试目标中。

    【讨论】:

      【解决方案3】:

      您是否尝试导入 sqlite3 库,例如:

      #import "sqlite3.h"

      代替:

      #import &lt;sqlite3.h&gt;

      【讨论】:

        【解决方案4】:

        我发现在您的 IOS 应用程序中使用 SQLite 的最佳方式是构建您自己的 SQLit 库副本并将其包含在您的项目中。 libsqlite3.0.dylib 是 SQLite 的一个非常古老的副本。

        您可以轻松下载 SQLite Amalgamation 源代码并为 IOS 构建它。这为您提供了最新的 SQLite 源代码,其中包含所有最新的错误修复和改进。

        如果您可以打开 Xcode 并创建一个新的静态库项目,那么您已经完成了 75%。

        拥有静态库项目后,请包含您从 SQLite Amalgamation 下载的 SQLite 源代码,并设置一些预处理器选项,然后关闭并使用最新代码运行。

        有关完整的详细信息和示例源代码,您可以访问我的博客conedogers

        【讨论】:

          猜你喜欢
          • 2015-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多