为什么我的WPF应用程序中出现“无法加载DLL'sqlite3'”?

时间:2014-12-06 05:05:47

标签: wpf sqlite visual-studio-2013 nugetgallery runtime-packages

我在我的应用程序中添加了我认为必要的SQLite(和sqlite-net)软件包。但是,在运行它时,我得到一个例外:

System.DllNotFoundException未被用户代码处理   的HResult = -2146233052   消息=无法加载DLL的'sqlite3':找不到指定的模块。 (来自

的例外情况

我安装了以下SQLite包:

enter image description here

缺少什么?

更新

我尝试了ajawad987的建议,但仍然得到相同的运行时错误,即使我有这个:

enter image description here

......而且这个:

enter image description here

更新2

发生这个运行时异常的地方(在SQLite.cs中)对我来说似乎很奇怪:

如果是SILVERLIGHT || 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);

ENDIF

但我使用C#,那么为什么线路甚至无法运行? (它在“else”块中失败了?)

3 个答案:

答案 0 :(得分:15)

您的项目构建是否设置为Any CPU?对于SQLite3,您需要将其设置为x86x64x86路由将在设备之间产生更多兼容性,因此除非您使用某些特定的64位内容,否则我建议使用该选项。

编辑:您还需要从Sqlite's main site手动下载实际的Sqlite DLL。您想要的文件名为sqlite-dll-win32-x86-3080702.zip。从该ZIP中提取DLL并将其作为内容文件添加到项目中。将属性工具窗口中的“复制到输出目录”选项设置为始终复制,然后重建。还要确保您的项目设置为上面提到的x86选项。

这应该希望做到这一点......自从我在.NET应用程序中使用Sqlite以来已经有一段时间了。

附注:您下载的Nuget包实际上只包含真正的Sqlite DLL周围的C#包装器库。

答案 1 :(得分:3)

我在Windows商店应用程序上遇到了同样的问题,我按照本教程解决了这个问题: http://www.c-sharpcorner.com/UploadFile/d351ba/working-with-sqlite-in-windows-store-apps/

无需手动下载dll。重要的一步是第五步:

5。添加对项目的引用。

右键单击解决方案下对项目的引用,选择Add References。这将打开项目的参考管理器。

在Reference Manager中单击Windows版本。我的应用程序针对Windows 8.1,因此我选择了“Windows 8.1”。从列表中选择Extensions,如上面的屏幕截图所示。现在,您将获得适用于您的项目的SDK列表。从屏幕上可以看出,SQLite for Windows Runtime(Windows 8.1)可以在Nuite套件安装程序安装SQLite后的列表中找到。

现在检查/勾选两个选项Microsoft Visual C ++ 2013 Runtime Package for Windows 8.1和SQLite for Windows Runtime(Windows 8.1),如屏幕截图所示。然后单击“确定”。

检查是否添加了引用。您可以看到添加了引用,但它在这些添加的引用上显示了一个感叹号。如果您现在构建应用程序,您将获得一些警告消息以及所有确定性的错误消息,并且构建失败并显示一些消息,如下所示。这是因为我们安装的SQLite不支持“Any CPU”处理器架构。

现在将目标平台从“任何CPU”更改为CPU架构。就我而言,CPU架构是x64。检查CPU体系结构的过程如下所示。

不确定这是否适用于WPF应用,但它适用于Windows商店应用。点击上面的链接了解详情和截图。

希望这会对某些人有所帮助; - )

答案 2 :(得分:1)

在我的情况下,我只需将项目构建设置为 x86 x64 AND 将目标框架设置为4.它不是使用更高的框架。