Question

J'ai compilé une bibliothèque statique et lié à la fois SqlciPher et OpenSSL. Le projet complet, le makefile et la bibliothèque compilés sont disponibles ici:

https://github.com/anujb/SQLCipherNet

Lorsque je lie la bibliothèque résultante dans un projet Xcode objectif-C normal, l'appel à sqlite3_key fonctionne bien.

J'ai lié la même bibliothèque dans un projet Monotouch en utilisant:

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

Ensuite, j'ai modifié Sqlite-Net pour appeler la fonction clé, après chaque SQLite3.Open(...) fonction:

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

Mais j'obtiens une entréepointNotFoundException lorsque la méthode clé est appelée. Voici la trace de pile:

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 

De toute évidence, le StackTrace n'est pas particulièrement utile, mais je suis à court de savoir où commencer à déboguer cette question. Halp?

Était-ce utile?

La solution

J'obtiens la même erreur lors de la création de votre solution pour "Debug | iPhonesimulator". Cependant, vos options de projet, pour cette configuration, font ne pas inclure le gcc_flags Vous avez mentionné - l'exception est donc totalement normale.

Essayer de construire la configuration "Debug | iPhone" (où les options sont spécifiées) échoue à cause des problèmes de chemin ... mais je suis presque sûr que cela fonctionnerait si je les réparais ;-)

METTRE À JOUR

Déplacer la bibliothèque vers son bon endroit me donne:

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

Je crois qu'il manque à cause de LiboPenssl?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top