Pergunta

Estou tentando acessar uma espacialita a partir de C# usando o provedor System.Data.SQLite. Quando tento carregar a extensão espacialita, sempre recebo o

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

Erro, mesmo que a DLL da espacialita tenha sido copiada para o diretório da bin. Até tentei especificar o caminho absoluto para a DLL, mas sem sucesso.

Aqui está o código:

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();
    }
    ...

A partir de esse link Tenho a impressão de que isso deve funcionar.

desde já, obrigado

Foi útil?

Solução

Bem, graças ao SQLite3.exe Comando Line Tool, descobri que existem algumas DLLs adicionais necessárias para que isso seja executado:

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

Você pode encontrá -los em Página de download da espacialita. Basta copiá -los para o diretório da bin.

ATUALIZAR: Uma DLL adicional necessária é libiconv2.dll

Outras dicas

Eu tive exatamente o mesmo problema em Java. Liguei System.load () Para todas as DLLs dependentes e tudo funcionou como um campeão!

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top