NuGet からのマルチアーキテクチャ (x86、x64) バージョンの SQLite の既定のインストールは、説明した動作を示します。.NET ランタイムがマシン上でアプリケーションを実行するために選択した実際のアーキテクチャの正しいバージョンをロードする場合は、次のように、正しいライブラリの場所に関するヒントを DLL ローダーに与えることができます。
Program.Main() の前に、kernel32.dll 関数呼び出しの宣言を SetDLLDirectory() に追加します。
[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
static extern bool SetDllDirectory(string lpPathName);
次に、独自の方法を使用して正しいサブディレクトリを決定し、アーキテクチャ固有のバージョンの「SQLite.Interop.dll」を見つけます。次のコードを使用します。
[STAThread]
static void Main()
{
int wsize = IntPtr.Size;
string libdir = (wsize == 4)?"x86":"x64";
string appPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
SetDllDirectory(System.IO.Path.Combine(appPath, libdir));