Domanda

Ho compilato una biblioteca statica e collegata sia SQLCipher che OpenSSL.Il progetto completo, Makefile e Biblioteca compilata sono disponibili qui:

https://github.com/anujb/SQLCipherNet
.

Quando collego la libreria risultante in un normale progetto Objective-C Xcode, la chiamata a sqlite3_key funziona bene.

Ho collegato la stessa libreria in un progetto Monotouch usando:

-gcc_flags "-L${ProjectDir} -lsqlciphernet -force_load ${ProjectDir}/libsqlciphernet.a"
.

Allora ho modificato SQLite-Net per chiamare la funzione chiave, dopo ogni funzione SQLite3.Open(...):

[DllImport("__Internal", EntryPoint = "sqlite3_key")]
public static extern Result Key(IntPtr db, string key, int keyLength);
.

Ma ottengo un entrypointnotfoundexception quando viene chiamato il metodo chiave.Ecco la traccia dello stack:

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 
.

Ovviamente lo stacktrace non è particolarmente utile, ma sono in perdita da dove cominciare a eseguire il debug di questo problema.Halp?

È stato utile?

Soluzione

ottengo lo stesso errore durante la creazione della soluzione per "debug | iPhonesimulator".Tuttavia le opzioni di progetto, per questa configurazione, fai non includono il gcc_flags che hai menzionato, quindi l'eccezione è totalmente normale.

Cercando di costruire la configurazione "Debug | iPhone" (dove vengono specificate le opzioni) non riescono a causa dei problemi del percorso ... ma sono abbastanza sicuro che funzionerà se li risolto; -)

Aggiornamento

Spostamento della biblioteca nella posizione giusta mi dà:

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
.

credo che sia mancato a causa della libopenssl?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top