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.

  • Objects Sorting With date ,Time Problem in Array(Iphone Development)
  • Objective-C determine data network type of the iOS device
  • Change iPhone UISlider bar image
  • Share my iPhone app for testing
  • iOS: parse a URL into segments
  • Suppressing deprecated warnings in Xcode
  • 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?

    3 Solutions Collect From Internet About “Compiling custom SQLite for an iPhone app”

    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

    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.

    That type of error usually means a missing framework.

    1. Right- or control-click on your Project’s Frameworks folder.
    2. Select Add > Existing Framework…
    3. Go to: Macintosh HD > Developer > Platforms > iPhoneOS.platform > Developer > SDKs > iPhoneOS2.2sdk > usr > lib and select libsqlite3.dylib
    4. Rebuild your project

    That should take care of it, I think. You may need to add a similar library for running on the iPhone Simulator.