“找不到PInvoke DLL'dbnetlib.dll'。”智能设备应用程序中的错误

时间:2014-02-17 19:55:53

标签: c# sql sql-server dll windows-ce

我正在Visual Studio Pro 2008中创建一个程序,我正在尝试从我的程序访问SQL数据库。运行程序的设备在Windows CE上运行,它是条形码扫描程序。当我运行代码并尝试建立与数据库的连接时,我会抛出一个MissingMethodExeption,它说:

Can't find PInvoke DLL 'dbnetlib.dll'.

从在线研究,我发现你需要安装sql.ppc.we5.armv4i.cab文件,但我的设备没有安装它(我的一个问题)。

以下是我用来与SQL数据库建立连接的代码。

 string conString = "Data Source=OS4DPC05\\SQLEXPRESS;Initial Catalog=testing;Integrated Security=SSPI;User ID=**************;";
 Process.Start("\\windows\\wceload.exe", "'\\Program Files\\SmartDeviceProject2\\sql.ppc.wce5.armv4i.cab'");
        using (SqlConnection con = new SqlConnection(conString))
        {
            con.Open();
        }

这只是代码的一部分,但程序总是停在con.Open();

任何人都知道如何解决这个问题?任何建议将不胜感激。

5 个答案:

答案 0 :(得分:3)

我解决问题的方法是在计算机上找到了dbnetlib.dll,并将其放在运行我的应用程序的同一文件夹中。不止一个,所以我一直在复制不同的版本,直到找到合适的版本。

答案 1 :(得分:2)

复制sql.ppc.we5.armv4i.cab无法解决问题。

问题是Visual Studio中的错误不会在要复制到设备的依赖项列表中包含dbnetlib.dll。 我已经将EMDK(在我的情况下为motorola Wt41N0)armv4目录中的相应dbnetlib.dll文件直接添加到VS项目并将其设置为始终复制以确保它最终在构建中。

您的设备不同,但SDK目录下的某个版本的dbnetlib.dll应该适用于您的设备处理器类型。

答案 2 :(得分:1)

尝试从Windows Compact Edition 7设备连接到Sql Server 2014实例时遇到同样的问题。

enter image description here

我使用的是Visual Studio 2008,因为它是支持智能设备的最新版本(Windows CE 7的设备类型)。所以我在计算机上搜索了 dbnetlib.dll ,并从 armv4i 目录中选择了一个:

enter image description here

我将该dll复制到目标设备上我的应用程序所在的同一目录中,然后该应用程序工作正常。

答案 3 :(得分:0)

我在VS2008中为Win CE6.5手持设备构建了一个项目,并且连接到ms sql没有问题。

现在我有了新的Win CE 7.0设备,突然间我在运行同一个项目时收到了这条消息。

原来我的新WinCE7.0手持设备中的Windows文件夹丢失了dbnetlib.dll文件。

所以我将文件从我的WinCE6.5设备复制到新WinCE7.0设备的Windows文件夹中 - 它完全正常。

答案 4 :(得分:-1)

只需从您的电脑上复制dbnetlib.dll并将其粘贴到运行后安装cab文件的设备应用程序存储文件夹中。