无法加载DLL文件'sqlite3' - 适用于Windows通用移动设备

3

我使用带SP2的Visual Studio 2015。我尝试创建了一个带有sqlite的Windows通用应用程序。我添加了适用于通用Windows平台的SQLite和SQLite.Net-PCl。这是我的简单代码:

var conn = new SQLiteConnection(
            new SQLitePlatformWinRT(),
            Path.Combine(ApplicationData.Current.LocalFolder.Path,  "Storage.sqlite"));

在桌面平台上它可以工作,但在移动设备和模拟器上却无法正常工作。我遇到了System.DllNotFoundException异常:

  HResult=-2146233052
  Message=Unable to load DLL 'sqlite3': The specified module could not be  found. (Exception from HRESULT: 0x8007007E)
Source=SQLite.Net.Platform.WinRT
TypeName=""
StackTrace:
   at SQLite.Net.Platform.WinRT.SQLite3.SetDirectory(UInt32 directoryType, String directoryPath)
   at SQLite.Net.Platform.WinRT.SQLiteApiWinRT..ctor()
   at SQLite.Net.Platform.WinRT.SQLitePlatformWinRT..ctor()
   at AppDbTest.MainPage.DbConnection()
   at AppDbTest.MainPage..ctor()
   at AppDbTest.AppDbTest_XamlTypeInfo.XamlTypeInfoProvider.Activate_0_MainPage()
   at AppDbTest.AppDbTest_XamlTypeInfo.XamlUserType.ActivateInstance()

我尝试着使用这个方法。我重新安装了适用于通用 Windows 平台的 SQLite 扩展和 SQLite.Net-PCl。我创建了一个清晰的项目,但对我来说它并没有起作用。


你尝试过更新你的NuGet包以适应新的SQLite版本吗? - Jerin
我使用 SQLite.Net-PCL 3.1.1 和 SQLite.Net.Async-PCL 3.1.1。这是最新版本。 - FetFrumos
对于SQLite.Net.Async-PCL,我正在使用3.0.5版本,因为3.1.1版本出现了一些错误,在我的项目中除此之外,我的项目在桌面、移动设备和模拟器上都能正常运行。这个问题只出现在当前项目中还是其他所有项目中都有? - Jerin
这是第一个工作项目中的问题。我创建了一个清晰的Windows通用项目 - 但我遇到了这个问题。 - FetFrumos
让我们在聊天中继续这个讨论 - Jerin
显示剩余2条评论
3个回答

10

我为通用 Windows 平台应用程序添加了 Visual C++ 2015 运行时库的引用,这对我很有效。我在通用 Windows 平台上使用了 SQLite。


5

请确保您当前添加了2个引用

  1. 适用于通用 Windows 平台的 Sqlite
  2. 适用于通用 Windows 平台的 Visual C++ 运行时 2015

它仍然可以工作!


这应该是预期的答案。如果您看不到“通用Windows平台的Sqlite”选项..那么请从Sqlite.org安装VSIX。 - Mohib Sheth

0

在聊天中解决了。
OP使用Nuget控制台解决了它: Install-Package SQLite.WinRT.UAP 并使用“添加链接” ->“扩展” ->适用于Windows运行时的SQLite
建议
很酷,但建议您使用适用于通用应用平台的Extension SQLite,因为它包含大多数设备系列,不需要SQLite.WinRT.UAP。 在当前存储库中,我删除了Winrt的引用,并且使用这些扩展名可以正常工作。只需检查您系统上安装的Sqlite vsix软件包是否正确。


抱歉,但这对我来说不起作用 :(. “SQLite for Universal App Platform”是旧名称,“SQLite for Universal Windows Platform”是新名称吗? - FetFrumos
哦,是的,你说得对。从这个教程可以看出,早期的版本是“SQLite for Universal App Platform”(即使我已经安装了它),但现在已更改为“SQLite for Universal Windows Platform”。但是,它不能在移动模拟器中运行,这意味着这是SQLite端的错误。这就是为什么WinRT SQLite可以工作而UWP却不能的原因。 - Jerin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接