zoukankan      html  css  js  c++  java
  • 无法找到 PInvoke DLL“sqlceme35.dll”

    以下红色字体是自己找到的原文。。。。
    在看了以下方法后感觉方法行不通。。
    原因:1.不知道如何取消自动部署。。
             2.环境大不一样。。
    自己摸索着把把此问题成功解决了。下面本人对解决方法的总结 发布出来大家共同探讨。。。
    开发环境:VS2008+VS2008SP1补丁。。
    1.创建一个新项目-安装和部署-智能设备CAB项目
    2.在应用程序文件夹里面添加项目bin/debug下面的dll和exe文件。。
    3.添加成功后你会发现在右边 解决方案管理器里面"System.Data.SqlServerCe.dll"有红色提示,则右键-取消排除
    4.部署项目属性(不是右键属性,而是F4的属性)把默认公司修改为不少汉字的格式。。
    5.如果创建快捷方式也不要在快捷方式的名字上带有汉字。。
    6. 3和4是防止在生成cab文件的时候出错。
    7.安装 C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\armv4i
    下面的:sqlce.wce5.armv4i.CAB
     sqlce.ppc.wce5.armv4i.CAB (可能识别不了,不过没关系)
     sqlce.dev.CHS.wce5.armv4i.CAB(可能识别不了,不过没关系)
    以上文件安装到手持终端
    8.在 PC中C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\armv4i下面的DLL文件
    拷贝 到HD中 “程序文件\Microsoft SQL Server Compact Edition\v3.5”中。

    以上就OK了。请测试。。pull方法。。我测试是成功的。。
    以上谢谢。有什么不足请指出。。。


    目前的错误是什么?

    1) Can't find P/Invoke DLL sqlceme30.dll

    2) Can't find P/Invoke DLL sqlceme35.dll

    3) Can't find P/Invoke DLL sqlceme40.dll

    这个错误到底什么意思?

    当一个托管组件(这里是System.Data.SqlServerCe.dll)试图调用一个原生DLL(这里是sqlcemeNN.dll,NN代表产品的版本号30,35,等),系统没有找到那个要装载并调用其方法的DLL。

    何时我们会碰到这个错误?

    当系统在系统目录或当前进程的执行目录找不到需要的DLL时,就会出现这个错误。

    如何处理这个错误?可能的修复方法是什么?

    有多种情况,下面是最常见的:

    1) 在.NET CF SP2之前,在存储卡上没有GAC的概念。如果你在存储卡上安装了SQL CE,在设备上安装了.NET CF 2.0 RTM/SP1,结果原生DLL就在存储卡上,而GAC在主存。因此,托管组件调用方法就会失败。

           a. 请使用.NET CF SP2以上版本。

           b. 请在主存储器安装cab文件。

           c. 请更新到SQL CE 3.0 SP2/3.1或以上。

    2) 你在开发智能设备(基于Windows CE操作系统)上的应用程序,并且使用了Visual Studio自动部署(F5)特性。VS在把System.Data.SqlServerCe.dll 映射到CAB文件时失败,只部署了System.Data.SqlServerCe.dll(注意:不会报错)。在这种情况下,原生DLL没有部署。

    a. 取消自动部署。 (别问我怎么做)

    b. 从项目中移除,然后重新添加 System.Data.SqlServerCe 的引用。 因为, VS 在项目文件保存了组件id. 而我们改变了SQL CE 3.5 SP1中的组件版本,移除再添加就会更新解决方案,引用正确的组件版本。

    c. 手动拷贝安装SQL CE 的所有3个CAB文件,它们在以下目录:

    %VisualStudioInstallRoot%\SmartDevices\SDK\SQL Server\Mobile\v3.5\ <platform>\ <processor>

    %ProgramFiles%\Microsoft SQL Server Compact Edition\3.5\Devices\ <platform>\ <processor>

    3) 系统加载sqlcemeNN.dll.失败。关于为什么系统加载模块失败的更多的细节,在我之前的一个blog(译注:中文翻译在这里)中有讨论。

    4) 如果你的机器是64位的,你可能陷入了默认的目标平台“任何CPU”的陷阱,请设置目标平台为“x86”。如需要更多详情,请访问ErikEJ的博客。

    5) 对于所有其他的情况,请升级到SQL CE 3.0 SP2/3.1 以上。如果可能,确保HKLM\Software\Microsoft\Microsoft SQL Server Compact Edition\<Version>\NativeDir 注册表指向原生DLL的安装目录。如果运行在WoW模式,请考虑WoW注册表。

     

  • 相关阅读:
    Javascript设计模式理论与实战:单例模式
    详解CSS盒模型
    linux添加计划任务
    python删除目录下七天前创建的文件
    centos上源码安装clang 3.8
    使用postman发送数据并构建collections执行测试
    python多线程实现同时执行两个while循环
    使用Python写Windows Service服务程序
    用Pyinstaller打包发布exe应用
    使用Jmeter监测服务器cpu、内存等性能
  • 原文地址:https://www.cnblogs.com/hyd309/p/1567479.html
Copyright © 2011-2022 走看看