我将我认为必要的 SQLite(和 sqlite-net)包添加到我的应用程序中。但是,在运行它时,我得到一个异常:
System.DllNotFoundException 未被用户代码处理 HResult=-2146233052 Message=Unable to load DLL 'sqlite3': 找不到指定的模块。 (异常(exception)
我安装了以下 SQLite 包:
缺少什么?
更新
我尝试了 ajawad987 的建议,但仍然遇到相同的运行时错误,即使我得到了这个:
...还有这个:
更新 2
这个运行时异常发生的地方(在 SQLite.cs 中)对我来说似乎很奇怪:
如果银光|| USE_CSHARP_SQLITE
var r = SQLite3.Open (databasePath, out handle, (int)openFlags, IntPtr.Zero);
其他
// open using the byte[]
// in the case where the path may include Unicode
// force open to using UTF-8 using sqlite3_open_v2
var databasePathAsBytes = GetNullTerminatedUtf8 (DatabasePath);
var r = SQLite3.Open (databasePathAsBytes, out handle, (int) openFlags, IntPtr.Zero);
结束
但我正在使用 C#,那么为什么失败的行甚至在运行? (它在“else” block 中失败)?
最佳答案
您的项目构建是否设置为Any CPU
?对于 SQLite3,您需要将其设置为 x86
或 x64
。 x86
路线将在设备之间产生更多兼容性,因此我推荐该选项,除非您执行某些特定的 64 位操作。
编辑:您还需要从 Sqlite's main site 手动下载实际的 Sqlite DLL。 .您需要的文件名为 sqlite-dll-win32-x86-3080702.zip
。从该 ZIP 中提取 DLL,并将其作为内容文件 添加到您的项目中。将属性工具窗口中的复制到输出目录选项设置为始终复制,然后重建。还要确保您的项目设置为如上所述的 x86 选项。
这应该希望可以解决问题……我已经有一段时间没有在 .NET 应用程序中使用 Sqlite 了。
旁注:您下载的 Nuget 包实际上只包含真正的 Sqlite DLL 周围的 C# 包装器库。
关于wpf - 为什么我的 WPF 应用程序中出现 "Unable to load DLL ' sqlite 3'"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328490/