静的ライブラリをコンパイルし、SQLCipher と OpenSSL の両方をリンクしました。完全なプロジェクト、makefile、およびコンパイルされたライブラリは、次の場所にあります。
https://github.com/anujb/SQLCipherNet
結果のライブラリを通常の Objective-C Xcode プロジェクトにリンクすると、呼び出しは正常にsqlite3_key
機能します。
以下を使用して、同じライブラリを MonoTouch プロジェクトにリンクしました。
-gcc_flags "-L${ProjectDir} -lsqlciphernet -force_load ${ProjectDir}/libsqlciphernet.a"
SQLite3.Open(...)
次に、すべての関数の後にキー関数を呼び出すように SQLite-NET を変更しました。
[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
明らかに、スタック トレースは特に役に立ちませんが、この問題のデバッグをどこから開始すればよいか途方に暮れています。ハーフ?