C# WinCE6.0 VS2008 下调用用Sqlite 提示“无法找到 PInvoke DLL“SQLite.Interop.DLL””

花开花折 2017-12-06 03:48:32
开发环境: C#  VS2008 WinCE6.0

操作方法:
1:在链接https://sourceforge.net/projects/sqlite-dotnet2/files/latest/download?source=files下载安装包SQLite-1.0.66.0-setup .exe
2:安装后在安装目录下C:\Program Files\SQLite.NET\bin\CompactFramework 下存在两文件 SQLite.Interop.066.DLL、System.Data.SQLite.dll;
3:在项目--属性--添加引用System.Data.SQLite.dll 文件,然后将SQLite.Interop.066.DLL拷贝到XX.exe同目录下;
4:也就是说在启动调试前 目标设备生成的XX.exe 文件下存在System.Data.SQLite.dll 、SQLite.Interop.066.DLL这两个文件

代码如下:

string CurrentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
string SQLDB = CurrentPath + "\\MyMVSDB.db";
//添加数据库数据源
if (!System.IO.File.Exists(SQLDB))
{
MessageBox.Show(CurrentPath);
MessageBox.Show("无法找到相应的数据库");
}
SQLDB = "Data Source=" + SQLDB + ""; //给sqlite的连接字符串赋值
SQLiteConnection conn = new SQLiteConnection(SQLDB);
conn.Open();


A:启动调试时报 “无法找到 PInvoke DLL“SQLite.Interop.DLL”” ;但实际XX.exe目录下是存在SQLite.Interop.066.DLL文件,如果不存在也应该报PInvoke DLL“SQLite.Interop.066.DLL”错误啊,奇怪了。
B:忘各大神指点下。谢谢
...全文
265 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2017-12-07
  • 打赏
  • 举报
回复
没有使用CE开发过,不过通常类似这种错误,我会手动制定dll路径 在app.config里runtime 配置节里手动加上 dll的版本和查找路径(话说sqllite就算不是CE本身都麻烦,一个32位的dll,一个64位的dll,多项目的解决方案下引用起来也混乱)
91program 2017-12-07
  • 打赏
  • 举报
回复
偶没有使用过 C# 开发 WinCE 应用,只用过 C++,所以帮不了 LZ。 建议 LZ 找一个,估计是版本不对,或者不是 WinCE 下需要的版本。
花开花折 2017-12-07
  • 打赏
  • 举报
回复
引用 3 楼 91program 的回复:
偶没有使用过 C# 开发 WinCE 应用,只用过 C++,所以帮不了 LZ。 建议 LZ 找一个,估计是版本不对,或者不是 WinCE 下需要的版本。
1:咨询了下硬件厂家的技术人员,说他们控制器是Wince X86架构处理器的,但SQLite数据库只支持如下架构: Precompiled Binaries for Windows CE (.NET Compact Framework) sqlite-netFx35-binary-PocketPC-ARM-2008-1.0.106.0.zip (1.44 MiB) This binary package contains all the binaries for the PocketPC version of the System.Data.SQLite 1.0.106.0 (3.21.0) package. The included native binaries should work on all supported ARM versions of Windows CE prior to Windows Embedded Compact 2013. The .NET Compact Framework 3.5 is required. A: [color=#FFFF00]适用于早于WEC2013的wince60的ARM架构处理器,至少.NET3.5 [/color] sqlite-netFx39-binary-WinCE-ARM-2012-1.0.106.0.zip (1.59 MiB) This binary package contains all the binaries for the Windows Embedded Compact 2013 (ARM) version of the System.Data.SQLite 1.0.106.0 (3.21.0) package. The .NET Compact Framework 3.9 is required. B:至少.Net3.9 WEC2013版本的ARM处理器 sqlite-netFx39-binary-WinCE-x86-2012-1.0.106.0.zip (1.64 MiB) This binary package contains all the binaries for the Windows Embedded Compact 2013 (x86) version of the System.Data.SQLite 1.0.106.0 (3.21.0) package. The .NET Compact Framework 3.9 is required. C:至少.Net3.9 WEC2013版本的X86处理器 2:安照这种解释,那大家都是在ARM架构处理器下开发的吗? 请问大家的硬件平台都是ARM架构吗? 3:网上查了下发现还是有人用VS2005 开发的啊? 这个应该怎样解释? 4:且网上也有提供 ”ADO.NET 2.0 Provider for SQLite“ 支持Wince开发的dll啊? https://sourceforge.net/projects/sqlite-dotnet2/?source=typ_redirect
花开花折 2017-12-06
  • 打赏
  • 举报
回复
再补充: 1:在链接http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki#sqlite-netFx35-binary-PocketPC-ARM-2008 下载sqlite-netFx35-binary-PocketPC-ARM-2008-1.0.106.0.zip ,解压后会存在文件 SQLite.Interop.106.dll、System.Data.SQLite.dll 2:在项目中添加引用System.Data.SQLite.dll 并将文件 SQLite.Interop.106.dll拷贝到XX.exe 文件目录下, 3:启动调试报 “无法找到 PInvoke DLL“SQLite.Interop.106.dll”” 异常 A:但 这次报的dll文件名称与拷贝到目标设备中的dll名称 SQLite.Interop.106.dll相同。
花开花折 2017-12-06
  • 打赏
  • 举报
回复
补充: 1:各位有没测试过的在WinCE 下用过的这个两文件 System.Data.SQLite.dll 、SQLite.Interop.DLL 借我测试下。 2:上述操作是否有遗漏的或不正确的地方??????谢谢。

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧