我的x86和x64文件夹中的System.Data.SQLite.dll和SQLite.Interop.dll版本都在1.0.97.0上(引用也是此版本,从旧版本更新)。但是,我有以下错误:
无法在DLL“SQLite.Interop.dll”中找到名为“sqlite3_changes_interop”的入口点
由于它们都是相同版本this post和类似帖子,因此无法提供帮助。
我打开了本机代码调试。 SQLite DLL本身似乎已从正确的位置加载,因为我在调试输出中看到一条消息类似于:
已加载'L:\ path_to_project_folder \ x64 \ System.Data.SQLite.dll'
这些其他行也存在于输出中:
已加载'L:\ path_to_project_folder \ x64 \ SQLite.Interop.dll'
已加载'C:\ Program Files(x86)\ Dell备份和恢复\ Components \ Shell \ SQLite.Interop.dll'
这对我来说似乎很奇怪...我确实有戴尔备份和恢复工具,并且在此路径中有一个旧版本的SQLite和Interop dll(均为1.0.80.0)所以它看起来像是SQLite in我的项目文件夹正在尝试使用此interop dll,我完全不知道为什么。
这会发生什么特别的原因吗?有没有办法规避/消除这种行为?
请不要建议删除此实用程序,因为要求所有使用该程序的客户都这样做是不合适的。
答案 0 :(得分:0)
显然问题出在我系统上安装的Dell备份和恢复实用程序中。在阅读涉及相同实用程序的类似问题时,似乎该实用程序强制以某种方式使用特定旧版本的SQLite。
我的程序启动后立即打开内存连接似乎解决了这个问题。正在加载正确的版本。
using (SQLiteConnection conn = new SQLiteConnection("Data Source=:memory:"))
{
conn.Open();
}
在更新SQLite之前,我似乎没有看到此问题,因为我所使用的引用和所使用的Dell工具的互操作版本是兼容的。