سؤال

أحاول الوصول إلى مكاني من C# باستخدام System.Data.Sqlite مزود. عندما أحاول تحميل امتداد المكاني ، أحصل دائمًا على

System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.

خطأ ، على الرغم من أن DLL المكاني قد تم نسخه إلى دليل BIN. حتى أنني حاولت تحديد المسار المطلق إلى DLL ، ولكن دون جدوى.

هذا هو الرمز:

string connectionString = @"Data Source=D:\MyStuff\projects\OsmUtils\trunk\Data\Samples\DB\osm.sqlite";
using (SQLiteConnection connection = new SQLiteConnection (connectionString))
{
    connection.Open();

    using (SQLiteCommand command = connection.CreateCommand())
    {
        command.CommandText = @"SELECT load_extension('libspatialite-1.dll');";
        command.ExecuteScalar();
    }
    ...

من عند هذا الرابط أحصل على انطباع أن هذا يجب أن يعمل.

شكرا لك مقدما

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

المحلول

حسنًا ، بفضل أداة سطر الأوامر SQLite3.exe ، اكتشفت أن هناك بعض DLLs الإضافية اللازمة لتشغيلها:

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll

يمكنك العثور على هذه على صفحة تنزيل المكاني. فقط نسخها إلى دليل bin.

تحديث: يحتاج DLL إضافي واحد libiconv2.dll

نصائح أخرى

كان لدي نفس المشكلة بالضبط في جافا. اتصلت System.Load () لجميع DLLs التابعة وكل شيء يعمل مثل البطل!

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top