سؤال

لقد جمعت مكتبة ثابتة وربطت كل من سكلسيفر و بينسل.المشروع الكامل ، ماكيفيل ، والمكتبة المترجمة يمكن العثور عليها هنا:

https://github.com/anujb/SQLCipherNet

عند ربط المكتبة الناتجة في مشروع كسكودي الهدف العادي ، والدعوة إلى sqlite3_key يعمل بشكل جيد.

لقد ربطت نفس المكتبة في مشروع مونوتش باستخدام:

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

ثم قمت بتعديل سكليتي نت لاستدعاء وظيفة المفتاح ، بعد كل SQLite3.Open(...) وظيفة:

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

ولكن أحصل على إنتريبوينتنوتفوندكسيبتيون عندما يتم استدعاء الأسلوب الرئيسي.وهنا تتبع المكدس:

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 

من الواضح أن ستاكتريس ليست مفيدة بشكل خاص ، ولكن أنا في حيرة من أين تبدأ لتصحيح هذه المشكلة.هالب?

هل كانت مفيدة؟

المحلول

أحصل على نفس الخطأ عند بناء الحل الخاص بك ل "التصحيح|إيفونيسيمولاتور".ومع ذلك خيارات المشروع الخاص بك ، لهذا التكوين ، لا لا تشمل gcc_flags لقد ذكرت - لذا فإن الاستثناء طبيعي تماما.

محاولة بناء تكوين "تصحيح / اي فون" (حيث يتم تحديد الخيارات) فشل بسبب مشاكل المسار...لكنني متأكد من أنه سيعمل إذا قمت بإصلاحها؛ -)

تحديث

نقل المكتبة إلى المكان الصحيح يعطيني:

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

أعتقد أنه مفقود بسبب ليبوبنسل ?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top