Frage

Ich habe eine statische Bibliothek kompiliert und sowohl SQLCipher als auch OpenSSL verlinkt.Das vollständige Projekt, Makefile und kompilierte Bibliothek finden Sie hier:

https://github.com/anujb/SQLCipherNet

Wenn ich die resultierende Bibliothek in einem normalen Objective-C-Xcode-Projekt verknüpfe, erfolgt der Aufruf von sqlite3_key adaequat.

Ich habe dieselbe Bibliothek mit einem MonoTouch-Projekt verknüpft:

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

Dann habe ich SQLite-NET so modifiziert, dass nach jedem Aufruf die Tastenfunktion aufgerufen wird SQLite3.Open(...) Funktion:

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

Aber ich bekomme eine EntryPointNotFoundException, wenn die Schlüsselmethode aufgerufen wird.Hier ist der Stack-Trace:

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 

Offensichtlich ist der Stacktrace nicht besonders hilfreich, aber ich weiß nicht, wo ich anfangen soll, dieses Problem zu beheben.Halt?

War es hilfreich?

Lösung

Ich erhalte den gleichen Fehler beim Erstellen Ihrer Lösung für "Debug | iPhoneSimulator".Ihre Projektoptionen für diese Konfiguration tun dies jedoch nicht schließen Sie das ein gcc_flags sie haben erwähnt - also ist die Ausnahme völlig normal.

Der Versuch, die "Debug | iPhone" -Konfiguration (in der die Optionen angegeben sind) zu erstellen, schlägt aufgrund von Pfadproblemen fehl...aber ich bin mir ziemlich sicher, dass es funktionieren würde, wenn ich sie reparieren würde ;-)

UPDATE

Das Verschieben der Bibliothek an den richtigen Ort gibt mir:

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

Ich glaube, es fehlt wegen libopenssl?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top