8

System.Data.SQLite プロバイダーを使用して C# から SpatiaLite にアクセスしようとしています。SpatiaLite 拡張機能を読み込もうとすると、常に

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

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

このリンクから、これはうまくいくはずだという印象を受けます。

前もって感謝します

4

2 に答える 2

7

sqlite3.exe コマンド ライン ツールのおかげで、これを実行するには追加の DLL が必要であることがわかりました。

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

これらは、SpatiaLite のダウンロード ページで見つけることができます。それらを bin ディレクトリにコピーするだけです。

更新:必要な 1 つの追加の dll はlibiconv2.dllです

于 2009-10-12T19:40:15.900 に答える
3

Javaでまったく同じ問題がありました。依存するすべての DLL に対してSystem.load()を呼び出すと、すべてがチャンピオンのように機能しました。

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
于 2011-05-31T09:59:01.520 に答える