Вопрос

Я пытаюсь получить доступ к SpatiaLite из C #, используя System.Data.SQLite provider.Когда я пытаюсь загрузить расширение SpatiaLite, я всегда получаю

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

ошибка, даже несмотря на то, что библиотека DLL spatialite была скопирована в каталог 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 инструменту командной строки я обнаружил, что для его запуска необходимы некоторые дополнительные библиотеки DLL:

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

Вы можете найти их на Страница загрузки SpatiaLite.Просто скопируйте их в каталог bin.

Обновить: необходима одна дополнительная библиотека dll, это libiconv2.dll

Другие советы

У меня была точно такая же проблема в Java - Язык.Я звонил System.load() Система.загрузка() для всех зависимых DLL-файлов и все работало как чемпион!

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top