为iPhone应用程序编译自定义SQLite

时间:2009-05-05 07:11:03

标签: iphone xcode sqlite

我正在尝试将SQLite amalgamation源代码编译到我的iPhone应用程序中(让我可以访问iPhone编译版本的二进制文件中没有的全文搜索功能。

当我将sqlite3.c和sqlite3.h添加到普通的Carbon C应用程序模板时,它编译得很好(只有一个关于未使用变量的警告),但当我尝试在我的iPhone项目中编译它时,我得到一个数字与缺少函数声明有关的错误。我能够通过明确地包含ctype.h来解决这些问题,但这有点奇怪。

但是,即使在构建之后,它仍然无法链接以下错误:

"_sqlite3_version", referenced from:
_sqlite3_version$non_lazy_ptr in sqlite3.0
symbol(s) not found
collect2: ld returned 1 exit status

我认为这是iPhone应用程序的构建设置中的内容,但我无法理解。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

尝试执行此步骤:

  1. xcode菜单 - >项目 - >新目标 - >静态库 - >目标名称:SQLite
  2. 将SQLite合并源放入项目中,现在可以选择目标,选择SQLite
  3. xcode菜单 - >项目 - >修改有效目标 - >标签一般 - >直接依赖关系 - >添加SQLite
  4. 标签常规 - >链接库 - >添加你的SQLite

答案 1 :(得分:1)

我已经设法使用合并并将其直接转储到我的项目中而无需建议链接catlan(我不是说这是一个坏主意,只是它可以在主项目中完成)。

我不需要编辑任何东西(除了为文本搜索添加必要的FTS定义)和编译错误。检查您的构建设置,确保“-sqlite3”不在您的其他链接标志中。

答案 2 :(得分:0)

这种类型的错误通常意味着缺少框架。

  1. 右键或按住Control键点击项目的 Frameworks 文件夹。
  2. 选择添加>现有框架......
  3. 转到: Macintosh HD>开发人员>平台> iPhoneOS.platform>开发人员> SDKs> iPhoneOS2.2sdk> usr> lib 并选择 libsqlite3.dylib
  4. 重建您的项目
  5. 我认为应该照顾它。您可能需要添加类似的库才能在iPhone模拟器上运行。