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 目录即可。

更新:需要一个额外的 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 回答