在模拟器和iOS编译的libsqlite

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

#import <sqlite3.h> 

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

我怎样才能编译到iOS设备?

谢谢!

而不是简单地复制图书馆,这样做:

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

  • Build Phases ,然后Link Binary With Libraries

  • 在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOSxx.sdk/usr/lib/中添加/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOSxx.sdk/usr/lib/

以防万一有人遇到和我一样的问题。 如果你是unit testing你的代码,将lib文件也添加到你的testing目标。

你有没有尝试像下面这样导入sqlite3库?

#import "sqlite3.h"

代替:

#import <sqlite3.h>

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

您可以轻松下载SQLite Amalgamation源代码并为其构build。 这给你最新的SQLite源代码,所有最新的错误修复和改进。

如果你可以打开Xcode并创build一个新的静态库项目,那么你有75%的方式。

一旦你有了静态库项目,包括你从SQLite Amalgamation下载的SQLite源,并设置一些预处理器选项,并closures并运行最新的代码。

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