我需要在x64窗口下创建和访问一个spacespaceite扩展的SQLite数据库。

我已经下载了最新版本1.0.92.0,称为System.Data.SQLitesqlite-netFx45-static-binary-bundle-x64-2012-1.0.92.0.zip。它是从我的Visual Studio(2012)项目中引用的,它本身似乎还可以正常工作。

我也有最新的预编译的x64 spatiaLite版本4.1.1,称为spacespaceite-4.1.1-DLL-win-amd64.zip
来自spacespaceite的所有dll都存在于执行目录中。

当我尝试加载扩展程序时:

using (var conn = new SQLiteConnection("Data Source=\"" + _sqLiteFullName + "\""))
{
    conn.Open();
    conn.EnableExtensions(true);
    conn.LoadExtension("libspatialite-4.dll");
    ...
}

我在LoadExtension()行上收到一个 AccessViolationException (尝试读取 protected 内存。这通常表明其他内存已损坏)。

我注意到当使用PE Deconstructor(确定dll/exe的bitnewss的软件)查看时,它说我的System.Data.SQLite.dll副本(来自x64软件包)实际上是32位。那是问题吗?

我该如何补救?

其他人如何在x64上获得spatiaLite的支持?

最佳答案

实际上,问题可能出在我自己花了一个星期试图解决相同问题但没有成功的autumnite-4.dll中。看来spacespaceite-4.dll中存在问题(我是说这是从gaia-sins(官方spaceiteite网站)下载的)
您可以尝试从来源(如噩梦(:))构建Spatialite,也可以尝试寻找另一种.dll。第二种选择对我有所帮助。
顺便说一句,使用Spatialite扩展名需要几个.dll:

  • libsqlite3-0.dll
  • libgeos-3-0-2.dll
  • libgeos-c-1.dll
  • libiconv2.dll
  • libproj-0.dll
  • libvirtualtext-2.dll
  • libspatialite-2.dll
    希望这对
  • 有帮助

    关于c# - 获得适用于x64 C#的SpatiaLite + SQLite系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22667981/

    10-12 21:52
    查看更多