0

在过去的 4、5 个小时里,我一直在尝试让 SQL Server CE 与 Visual Studio 2005 一起工作。但没有运气。当我运行我的应用程序时,我收到以下错误:

找不到 PInvoke DLL 'sqlceme35.dll'

我已经阅读了无数关于它的线程和文章,但无法使其工作。使用以下工具:

  • 运行 Intel Bulverde 处理器的 Windows CE 5.0 设备
  • 带有 Visual Studio 2005 的 Windows XP 32 位
  • SQL Server 紧凑型 3.5

这就是我所做的。

  1. 创建一个新的“智能设备”项目并选择“Windows CE 5.0”
  2. 安装了 SQL Server Compact 3.5(在 Windows XP 上),它安装了一堆文件夹和文件
  3. 在我的项目中,我添加了对“System.Data.SqlServerCe.dll”的引用,该引用位于安装 SQL Server Compact 3.5 的文件夹内
  4. 然后我写了几行代码如下,我从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();
    
  5. 然后,我在创建了一个文件夹“Microsoft SQL Server Compact Edition”中的一堆 DLL 文件

  6. 然后我运行了我的程序,但我得到了如上所述的错误。SqlCeEngine engine = new SqlCeEngine("Data Source = Test.sdf");行抛出错误
  7. 我想可能我需要将文件夹“Microsoft SQL Server Compact Edition”中的所有 DLL 复制到运行程序的目标设备上的应用程序文件夹中,所以我复制了所有文件,但仍然出现相同的错误。
  8. 然后我想可能是我需要使用“armv4i”而不是“x86”所以我首先安装了“sqlce.wce5.armv4i.CAB”、“sqlce.repl.wce5.armv4i.CAB”、“sqlce.dev.ENU” .wce5.armv4i.CAB”,正如预期的那样,它不起作用。所以我再次将所有 DLL 复制到我的程序文件夹中,但没有运气。

我究竟做错了什么?

4

1 回答 1

0

Bulverde IIRC 是 PXA27x 系列处理器,它绝对是 ARM 内核,而不是 x86,因此您必须使用 ARM 二进制文件。

首先确保您有一个恢复出厂设置的设备(注册表将是重置的重要部分)。

然后使用此文件夹中的 CAB(或直接使用二进制文件):

%PROGRAM_FILES%\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\armv4i

确保System.Data.SqlServerCe.dll程序集在设备上(通常在您的应用程序文件夹中)。

如果它仍然失败,您可能缺少依赖项。针对 SQL Compact 二进制文件运行depends.exe(在桌面上)以查看它们需要什么并确保它们在您的目标上。

于 2012-12-06T14:26:42.270 回答