質問

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

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

前もって感謝します

役に立ちましたか?

解決

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

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

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

アップデート: 追加で必要な DLL が 1 つあります libiconv2.dll

他のヒント

まったく同じ問題がありました ジャワ. 。私は電話した 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