在过去的4.5个小时里,我一直在努力使SQL Server CE与Visual Studio 2005协同工作。但没有运气。当我运行我的应用程序时,我得到以下错误:
找不到PInvoke DLL"sqlcem35.DLL">
我读过无数关于它的线程和文章,但无法使它发挥作用。使用以下工具:
- 运行Intel Bulverde处理器的Windows CE 5.0设备
- 带有Visual Studio 2005的Windows XP 32位
- SQL Server Compact 3.5
这是我所做的。
- 创建了一个新的"智能设备"项目并选择了"Windows CE 5.0">
- 已安装SQL Server Compact 3.5(在Windows XP上),它安装了一堆文件夹和文件
- 在我的项目中,我添加了对"System.Data.SqlServerCe.dll"的引用,该引用位于安装SQL Server Compact 3.5的文件夹中
-
然后我写了几行代码,如下所示http://msdn.microsoft.com/en-us/library/aa226134(v=sql.80).aspx
SqlCeEngine engine = new SqlCeEngine("Data Source = Test.sdf"); engine.CreateDatabase(); conn = new SqlCeConnection("Data Source = Test.sdf"); conn.Open();
-
然后,我在目标设备上安装了"wce500\x86"中的"sqlce.dev.ENU.wce5.x86.CAB"、"sqlce.repl.wce5.x86.CAB"one_answers"sqlce.wce5.x86.CAB",这些文件在文件夹"Microsoft SQL Server Compact Edition"中创建了一堆DLL文件
- 然后我运行了我的程序,但我得到了如上所述的错误。错误由以下行引发:SqlCeEngine engine=new SqlCeEngine("Data Source=Test.sdf")
- 我想我可能需要将文件夹"Microsoft SQL Server Compact Edition"中的所有DLL复制到目标设备上运行程序的应用程序文件夹中,这样我就复制了所有文件,但仍然存在相同的错误
- 然后我想我可能需要使用"armv4i"而不是"x86",所以我首先安装了"sqlce.wce5.armv4i.CAB"、"sqlce.repl.wce5.arm v4i.CAB"、"sqlce.dev.ENU.wce5.arm v4i.CAB",但不出所料,它没有工作。所以我再次将所有DLL复制到我的程序文件夹中,但没有成功
我做错了什么?
Bulverde,IIRC,是PXA27x系列处理器,它肯定是ARM核心,而不是x86,所以您必须使用ARM二进制文件。
首先要确保你有一个出厂重置设备(注册表将是重置的重要部分)。
然后使用此文件夹中的CAB(或直接使用二进制文件):
%PROGRAM_FILES%Microsoft SQL Server Compact Editionv3.5Deviceswce500armv4i
确保System.Data.SqlServerCe.dll
程序集位于设备上(通常位于应用程序文件夹中)。
如果它仍然失败,那么您可能缺少一个依赖项。对SQL Compact二进制文件运行dependens.exe(在桌面上),查看它们需要什么,并确保它们在您的目标上。