我編譯了一個靜態庫並鏈接了SQLCipher和OpenSSL。完整的項目,生成文件和編譯的庫可以在這裏找到:在MonoTouch中使用SQLCipher
https://github.com/anujb/SQLCipherNet
當我在一個正常的Objective-C的Xcode項目鏈接即可庫,調用sqlite3_key
工作正常。
我已經連接的同一個庫到使用MonoTouch的項目:
-gcc_flags "-L${ProjectDir} -lsqlciphernet -force_load ${ProjectDir}/libsqlciphernet.a"
然後我修改的SQLite-NET調用的關鍵功能,每個功能SQLite3.Open(...)
後:
[DllImport("__Internal", EntryPoint = "sqlite3_key")]
public static extern Result Key(IntPtr db, string key, int keyLength);
但是,當Key方法被調用時,我得到一個EntryPointNotFoundException。這裏的堆棧跟蹤:
System.EntryPointNotFoundException has been thrown at:
at (wrapper managed-to-native) SQLite.SQLite3:Decrypt (intptr,string,int)
at SQLite.SQLiteConnection..ctor (System.String databasePath) [0x00031] in
../SQLite.cs:108
顯然堆棧跟蹤是不是特別有幫助,但我在虧損在何處開始調試這個問題。 HALP?
哈哈,業餘的錯誤!當我調整構建參數時效果很好。現在我只需要記錄這個過程! – Anuj 2012-02-27 01:25:52