x64 ウィンドウで、spatialite 拡張 SQLite データベースを作成してアクセスする必要があります。
System.Data.SQLitesqlite-netFx45-static-binary-bundle-x64-2012-1.0.92.0.zip
と呼ばれる最新バージョン 1.0.92.0 をダウンロードしました。これは私の Visual Studio (2012) プロジェクトから参照されており、それ自体で問題なく動作するようです。
また、spatialite-4.1.1-DLL-win-amd64.zip という最新のプリコンパイル済み x64 spatiaLiteバージョン 4.1.1 も持っています。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 ビットであることがわかります。それが問題ですか?
これを解決するにはどうすればよいですか?
他の誰かが x64 で spatiaLite を動作させた方法を教えてください。