无法加载DLL的'sqlite3':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)

时间:2011-01-20 06:55:16

标签: sqlite

我目前正在使用SQLite for Windows Forms,但在运行项目时显示错误:

  

无法加载DLL的'sqlite3':找不到指定的模块。 (HRESULT异常:0x8007007E)

我添加了System.Data.SQLite.dll的DLL,但它显示的是同样的错误。请问有关这个问题的完美答案可以帮助我吗?提前致谢

13 个答案:

答案 0 :(得分:21)

这应该解决我的问题。 添加以下dll。

enter image description here

答案 1 :(得分:12)

使用项目“添加现有项目”并选择sqlite3.dll“As link”。单击确定。在项目中选择DLL并将“Copy Local”值设置为True。

答案 2 :(得分:11)

也许您还没有为正确的平台添加版本? SQLite与一个X86(32位)程序集和一个X64(64位)程序集一起分发。

如果您的应用程序是32位应用程序,您应该使用位于System.Data.SQLite发行版的“bin”目录中的System.Data.SQLite.dll,如果它是64位应用程序,您应该使用一个在“bin \ x64”中。

然而,从第二次查看错误消息我不确定是不是这样。您是否正在对SQLite进行本地调用?在这种情况下,您可能必须将dll重命名为sqlite3.dll。

您可能知道System.Data.SQLite是原始本机sqlite3.dll和托管ADO.NET提供程序的捆绑(除非您使用的是旧版本,在这种情况下我不确定 - 您可能需要本机sqlite3.dll单独)

答案 3 :(得分:3)

就我而言,我正在开展一个UWP项目。我不得不添加对 Visual C ++ 2015 Runtime for Universal Windows Platform Apps 的引用,错误消失了。它可以在Universal Windows>下的Reference Manager中添加。扩展。可以找到详细的解决方案here

答案 4 :(得分:2)

当我下载最新版本sqlite provider时,我遇到了同样的问题,我尝试了here的解决方案,但它没有用,因此我下载了earlier version,它的工作正常

答案 5 :(得分:2)

最近出现这个问题 - 在将procmon附加到我的进程后,我发现最新的System.Data.SQLite库(为.NET4构建的库)依赖于MSVC 2010运行时和服务器没有这个安装。当然,这可以下拉from the Microsoft website

答案 6 :(得分:1)

将sqlite3.dll复制到System32文件夹。它对我有用。也谢谢!

答案 7 :(得分:1)

我正在构建一个带有PCL和Droid项目的原生Windows Phone 8.1应用程序。我有同样的错误,我把引用放到正确版本的sqlite3.dll(wpa81),一切正常。

答案 8 :(得分:1)

特别是如果您已更新到Visual Studio 2015 RTM并正在开发通用Windows应用程序,请尝试卸载SQLite for Universal App Platform扩展并重新安装(请参阅http://sqlite.org/download.html)。

答案 9 :(得分:1)

我在Xamarin.Forms应用程序中对UWP项目有完全相同的问题。 添加对#34; SQLite for Universal Windows Platform"的引用到UWP项目解决了这个问题。 enter image description here

答案 10 :(得分:1)

经过3天的奋斗,终于找到了解决的方法。

截至2018年3月,如果您尝试通过Nuget Package Manager使用 sqlite-net ,它会向您的解决方案添加两个文件和几个参考dll,与项目UWP或Android等类型无关。 / p>

enter image description here

之后,如果您编译并运行该解决方案将失败并出现异常

无法加载DLL的'sqlite3':找不到指定的模块。 (HRESULT异常:0x8007007E)

这是因为它无法加载sqlite3.dll,因为它没有通过NUGET包管理器添加到解决方案中。所以你需要手动添加它。

要添加,首先确定您的项目是32位还是64位,然后从https://www.sqlite.org/download.html下载相应的Windows Runtime预编译二进制文件并手动添加(复制和粘贴)。

所以现在你的解决方案将如下所示,它将毫无问题地运行。 enter image description here

答案 11 :(得分:0)

所有这些似乎都是某些情况的解决方案。对于我和@Marlon Ticao在这个页面上,应用程序无法找到DLL。

有两种解决方案。将其复制到路径中的目录(例如System32),或者将其复制到可执行文件所在的目录中。

答案 12 :(得分:0)

我使用第三方构建的sqlite3.dll遇到了这个问题 - 应用程序无法启动。我使用依赖walker来发现这个sqlite3.dll依赖于msvcr110.dll。一旦我收录了这个文件,一切都很顺利。