NuGet에서 다중 아키텍처 (x86, x64) 버전의 SQLite를 기본 설치하면 설명 된 동작이 나타납니다. .NET 런타임이 컴퓨터에서 응용 프로그램을 실행하도록 선택한 실제 아키텍처에 맞는 올바른 버전을로드하려면 다음과 같이 DLL 로더에 올바른 라이브러리를 찾을 수있는 위치에 대한 힌트를 제공 할 수 있습니다.
Program.Main () 전에 SetDLLDirectory ()에 대한 kernel32.dll 함수 호출에 대한 선언을 추가하십시오.
[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));