Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compiling custom SQLite for an iPhone app

I'm trying to compile the SQLite amalgamation source into my iPhone app (to give me access to the full-text searching functionality that isn't available in the iPhone-compiled version of the binary.

When I add sqlite3.c and sqlite3.h to a normal Carbon C app template, it compiles just fine (with a single warning about an unused variable), but when I try compiling it in my iPhone project I get a number of errors relating to missing function declarations. I'm able to solve these problems by explicitly including ctype.h, but it's a little strange.

However, even after it builds it fails on linking with the following error:

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

I assume that it's something in the iPhone app's build settings, but I can't figure it out. Any ideas?

like image 699
John Biesnecker Avatar asked May 05 '09 07:05

John Biesnecker


2 Answers

Try it with this steps:

  1. xcode menu -> project -> new target -> static library -> target name: SQLite
  2. drop SQLite amalgamation source into the project, now you can select the target, choose SQLite
  3. xcode menu -> project -> edit active target -> tab General -> Direct Dependencies -> add SQLite
  4. tab General -> Linked Libraries -> add your SQLite
like image 78
catlan Avatar answered Nov 20 '22 02:11

catlan


I've managed to do this using the amalgamation and dumped it straight into my project without having to do the linking catlan suggested (I'm not saying it's a bad idea, merely it's possible to do in the main project).

I didn't need to edit anything (except for adding the necessary FTS define for the text searching) and compiled error free. Check your build settings and ensure '-sqlite3' isn't in your Other Linking Flags.

like image 35
arooaroo Avatar answered Nov 20 '22 00:11

arooaroo