質問

静的ライブラリをコンパイルし、SqlCipherとOpenSSLの両方をリンクしました。フルプロジェクト、メイクファイル、およびコンパイルされたライブラリはここにあります。

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);
.

しかし、鍵方式が呼び出されたときに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?

役に立ちましたか?

解決

「デバッグIPhonesimulator」のソリューションを構築するときに同じエラーが発生します。ただし、この構成のために、あなたのプロジェクトオプションは、 not を含めています。

「デバッグ| iPhone」設定(オプションが指定されている場所)の構築を試みているパスの問題のために失敗します。

更新

ライブラリを正しい場所に移動すると、

Undefined symbols for architecture armv6:   "___udivmodsi4",
referenced from:
      _sqlite3BitvecSet in libsqlciphernet.a(sqlite3.o)
      _sqlite3BitvecClear in libsqlciphernet.a(sqlite3.o)
      _sqlite3BitvecTest in libsqlciphernet.a(sqlite3.o) ld: symbol(s) not found for architecture armv6
.

Libopensslのために欠けていると思いますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top