如何解决“找不到PInvoke DLL SQLite.interop.dll”错误

3

我正在开发Windows Mobile应用程序,使用的是SQLlite数据库。我正在使用以下代码连接到该数据库:

                SQLiteConnection cn = new SQLiteConnection();
                SQLiteDataReader SQLiteDR;
                cn.ConnectionString = @"Data Source=F:\CompNetDB.db3";
                cn.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.CommandText = "select * from CustomerInfo";
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cn;
                SQLiteDR = cmd.ExecuteReader();

在上述情况下,我收到了“找不到PInvike DLL SQLite.interop.dll”的错误。我已经从\SQLite.NET\bin\compactframework文件夹中添加了DLL System.Data.SQLLite。这是在安装SQLite时默认安装的文件夹。在同一个文件夹中有一个名为SQLlite.Interop.66.DLL的DLL文件。当我尝试添加对此dll的引用时,它会出现错误,无法添加该dll。 SQLlite.Interop.dll和System.Interop.066.dll两个dll文件是否相同?在上面的代码中如何解决错误“找不到PInvoke.SQLite.Interop.dll”?请告诉我我的代码中是否有错误或者我的应用程序是否缺少某些内容?
2个回答

6

Interop DLL 是一个 C 动态链接库,其具有供 System.Data.SQLIte 调用的 P/Invoke 入口点。您无法添加对本地 DLL 的引用,必须将其单独复制到设备上。一种简单的方法是将其添加到项目中,将构建操作设置为“内容”,并将“复制到输出目录”设置为“仅在更改时复制”。调试时,Studio 会将该文件推送到设备上。


请问您能否解释一下如何将DLL添加到项目中? - Shailesh Jaiswal
1
只需像处理其他文件一样使用常规的“添加现有项”即可。您可能需要更改过滤器为“所有文件”才能看到它。 - ctacke
非常感谢。您能告诉我在哪里以及如何获取SQLite.Interop.dll吗?请回复,这将对我很有帮助,因为我找不到它。 - Shailesh Jaiswal
我发现在我的解决方案资源管理器中使用“显示所有文件”找不到SQLlite.Interop.dll,请帮助我。 - Shailesh Jaiswal
1
我几周前下载了SQLite,它就在我的下载文件夹里。 - ctacke

1

从SQLite.Interop.xxx.DLL中删除.xxx。按照ctacke的建议,将SQLlite.Interop.DLL和System.Data.SQLIte复制出来。


在我的情况下,我不必删除“xxx”(094)文件; 我将SQLite.Interop.094.dll复制到手持设备上存放.exe文件的文件夹中,这个特定的错误消息就消失了。 - B. Clay Shannon-B. Crow Raven

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