2011-10-01 71 views
12

編譯我的應用程序到iOS時遇到一些問題。 我使用sqlite3的和進口的libsqlite在模擬器和iOS編譯

#import <sqlite3.h> 

好吧,我只找到了一個在我的Mac名爲libsqlite3.0.dylib文件,我把它複製到我的項目。 當我爲iOS模擬器編譯它時,它工作得很好。但是,當我嘗試編譯iOS設備的應用程序時,它會在我執行sqlite函數(例如_sqlite3_open等)的每次調用中拋出一個錯誤(Apple Match-O鏈接程序錯誤)

我編譯到iOS設備?

謝謝!

回答

58

而不是簡單地複製庫,像這樣做:

  • in Xcode N AVIGATOR,點擊你的目標(個條目)

  • Build Phases,然後Link Binary With Libraries

  • 添加libsqlite3.dylib從它的位置在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOSxx.sdk/usr/lib/

+0

好的,它用你的提示編譯!謝謝!!但是,只要它調用使用sqlite3庫的方法並關閉應用程序,該應用程序就無法在iPhone中運行。在模擬器工作正常...爲什麼這樣?任何想法? Humm ...我從Xcode 4.1顯示的默認文件夾中添加了libsqlite3.dylib。 – Ibai

+0

在設備上,您應該看到一個崩潰日誌(Organizer => Devices => Device Log) –

+0

Hi ott。那麼,我買不起開發者許可證,我開始在這個iOS編程世界中作爲一種愛好,作爲一名學生,這對我來說是不可能的。我希望你明白。你有什麼想法,爲什麼這可能會導致崩潰?它編譯但不工作...再次感謝 – Ibai

0

你嘗試導入sqlite3的庫,如:

#import "sqlite3.h"

代替:

#import <sqlite3.h>

+0

它沒有什麼不同。 –

1

萬一有人面臨着和我一樣的問題。如果您要對代碼進行單元測試,請將lib文件也添加到您的測試目標中。

-1

我發現在您的IOS應用程序中使用SQLite的最佳方式是構建您自己的SQLit庫副本並將其包含在您的項目中。 libsqlite3.0.dylib是SQLite的一個非常舊的副本。

您可以輕鬆下載SQLite Amalgamation源代碼併爲其構建IOS。這會爲您提供最新的SQLite源代碼,其中包含所有最新的錯誤修復和改進。

如果你可以打開Xcode並創建一個新的靜態庫項目,那麼你有75%的方式。

一旦你有了靜態庫項目,包括你從SQLite Amalgamation下載的SQLite源,並設置了一些預處理器選項,並關閉並運行最新的代碼。

完整的詳細信息和示例源代碼,您可以訪問我的博客conedogers