Pregunta

Estoy intentando acceder a una SpatiaLite de C # con proveedor System.Data.SQLite. Cuando intento cargar la extensión SpatiaLite, siempre me dan la

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

error, aunque DLL del SpatiaLite se ha copiado en el directorio bin. Incluso he intentado especificar la ruta absoluta a la DLL, pero en vano.

Aquí está el 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();
    }
    ...

este enlace Me da la impresión de que esto debería funcionar .

Gracias de antemano

¿Fue útil?

Solución

Bueno, gracias a sqlite3.exe herramienta de línea de comandos, he descubierto que hay algunos archivos DLL adicionales necesarios para que esto ejecute:

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

Usted puede encontrar estos en de SpatiaLite página de descarga . Sólo tienes que copiar en el directorio bin.

UPDATE: una DLL adicional necesaria es libiconv2.dll

Otros consejos

Yo tenía el mismo problema exacto en Java . Llamé System.load () para todos los DLL dependientes y todo funcionó como un campeón!

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top