我需要在 x64 窗口下创建和访问一个空间扩展的 SQLite 数据库。
我已经下载了名为System.Data.SQLitesqlite-netFx45-static-binary-bundle-x64-2012-1.0.92.0.zip
的最新版本 1.0.92.0 。它是从我的 Visual Studio (2012) 项目中引用的,它本身似乎工作得很好。
我还有最新的预编译 x64 spatiaLite版本 4.1.1,称为 spatialite-4.1.1-DLL-win-amd64.zip 所有来自 spatialite 的 dll 都存在于执行目录中。
当我尝试加载扩展时:
using (var conn = new SQLiteConnection("Data Source=\"" + _sqLiteFullName + "\""))
{
conn.Open();
conn.EnableExtensions(true);
conn.LoadExtension("libspatialite-4.dll");
...
}
我得到一个AccessViolationException(试图读取受保护的内存。这通常表明其他内存已损坏)LoadExtension()
在线。
我注意到当使用PE Deconstructor(确定 dll/exe 的 bitnewss 的软件)查看时,它说我的 System.Data.SQLite.dll(来自 x64 包)的副本实际上是 32 位的。那是问题吗?
我该如何补救?
其他人是如何让 spatiaLite 在 x64 上工作的?