2009-05-05 30 views
9

我試圖將SQLite amalgamation源文件編譯到我的iPhone應用程序中(使我可以訪問在iPhone編譯版本的二進制文件中不可用的全文搜索功能。爲iPhone應用程序編譯自定義SQLite

當我將sqlite3.c和sqlite3.h添加到一個普通的Carbon C應用程序模板時,它編譯得很好(關於一個未使用的變量只有一個警告),但是當我嘗試在我的iPhone項目中編譯它時,我可以通過明確包含ctype.h來解決這些問題,但它有點奇怪

但是,即使在構建它後,它仍然無法鏈接到foll由於錯誤:

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

我假設它是在iPhone應用程序的構建設置的東西,但我不明白。有任何想法嗎?

+0

爲什麼您使用Carbon C應用程序模板進行iPhone部署? – 2009-05-05 08:35:06

+0

我不是。我只想看看它是否可以在任何地方編譯 - 即,如果iPhone項目的設置導致了問題 - 所以我認爲基本的碳C模板是最不可能干涉的。 – 2009-05-05 08:40:10

+0

(順便說一句,我是對的,因爲它編譯得很好) – 2009-05-05 08:40:42

回答

5

這個步驟試試:

  1. Xcode的菜單 - >項目 - >新目標 - >靜態庫 - >目標名稱:SQLite的
  2. 下降的SQLite合併源到項目,現在你可以選擇目標,選擇的SQLite
  3. Xcode的菜單 - >項目 - >編輯活動目標 - >常規選項卡 - >直接依賴關係 - >添加SQLite的
  4. 標籤通用 - >鏈接庫 - >添加您的SQLite
0

該類型的錯誤通常意味着缺少框架。您的項目框架文件夾

  1. 右手或控制點擊。
  2. 選擇添加>現有框架...
  3. 轉到:的Macintosh HD>開發>平臺> iPhoneOS.platform>開發者>的SDK> iPhoneOS2.2sdk> USR> LIB並選擇libsqlite3.dylib
  4. 重建項目

這應該照顧它,我想。您可能需要添加一個類似的庫以在iPhone模擬器上運行。

1

我設法做到這一點使用合併,並直接把它扔進我的項目,而不必做鏈接catlan建議(我不是說這是一個壞主意,只是它可以在主項目中做)。

我不需要編輯任何東西(除了爲文本搜索添加必要的FTS定義)和編譯錯誤免費。檢查您的構建設置並確保'-sqlite3'不在您的其他鏈接標記中。

相關問題