最近在PDA上开发照相功能,调用照相机的Api函数,但调试时一直提示

“无法找到 PInvoke DLL “*.dll“,网上查了一些相关资料:

1、Can’t find P/Invoke DLL sqlcemeNN.dll
目前的错误是什么?
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注册表。
来自:http://blog.csdn.net/flyjimi/archive/2008/12/11/3500606.aspx

PS:这个问题以前用SQLCE时碰到,解决方法类似^_^

2、法二如下
在vs.net2005中将×.dll设置为"如果较新则复制";“DLLName=com.dll“;这样dll就和你的程序在同一个目录下了;

PS:有人这样顺利解决问题
原文:http://www.cnblogs.com/CowboyProgrammer/archive/2009/03/19/1416419.html

3、有时候是这样造成的:
C# 不支持MFC类,用MFC应该选静态链接的类型;不要选MFC扩展DLL
原文:http://topic.csdn.net/u/20071128/16/96b28e14-5137-4be0-a16a-0fe22e0b3afe.html

4、编译的原因:要将DLL编译成与PDA的CPU和系统相符的。
前两天有客户需要在pda上运行的坐标转换程序,为了保护我们的坐标转换算法,用evc++4.0做了一个本地的DLL文件,生成基于模拟器的dll,在vs.net 2003的模拟器上用evc测试没有问题。但给用户使用后说是无法用,原来他们是在vs.net 2005上用c#调用该dll,用的是动态加载的方式,但提示说:PInvoke DLL “*.dll”;

查了很多资料,确定将该dll放在windows目录下和放在程序所在目录下应该都能识别该dll文件,这些都没有问题,最后只能考虑是不是dll写得有问题,查了资料后也确认dll写法没有问题,现在问题就落到编译目标和模拟器环境的问题上了;最后发现,2005里带的模拟器是基于arm的,所以必须在evc中编译为arm目标的dll才能使用。主要是不熟悉pda开发了

关于VS2005智能设备中无法找到PInvoke DLL问题相关推荐

  1. vc2005编译过程中没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题? 的彻底解决

    vc2005编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决 收藏 快毕业了,为了工作的需要,需要使用庞大的VS2 ...

  2. C++编译过程中没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题? 的彻底解决...

    今天本人用vs2005 sp1中文版,学习C++程序的过程中,在执行MFC程序时,在编译过程中出现如下问题: 相关问题:这里编译时可能出现以下问题 /************************* ...

  3. VC中使用Matlab Engine出现无法找到libeng.dll的问题

    我用的是Visual Studio 2008和Matlab R2009a,再次出现这个问题:在VS的包含头文件中已经加入:D:/ProgramFiles/MATLAB/R2009a/extern/in ...

  4. 没有找到MFC80D.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复问题。...

    在用VS2005学习C++调试程序的时候,按F5键,总提示这个问题, 不晓得什么原因,网上有的说找到MFC80.DLL复制到程序目录中,也有的说复制到安装目录中,可结果很失望,也有的VS2005安装有 ...

  5. 没有找到MSVCP80D.dll,因此这个应用程序未能启动。重新安装应用程序...

    为什么80%的码农都做不了架构师?>>>    在VS 2005中建立Win32工程时(以VS 2005中文版为例),你可能会遇到这样的运行错误:"没有找到MSVCP80D ...

  6. vs2008 C++ 没有找到MSVCR90D.dll 问题

    现象: win32程序,运行时弹出对话框:    "没有找到MSVCR90D.dll,因此这个应用程序未能启动,重新安装应用程序可能修复此问题" 解决:    网上一人说是微软BU ...

  7. c1xx: fatal error C1356: 无法找到 mspdbcore.dll

    DCNv2编译出了问题 c1xx: fatal error C1356: 无法找到 mspdbcore.dll error: command 'C:\\Program Files (x86)\\Mic ...

  8. 没有找到borlandmm.dll 报错的解决方法

    在程序中调用了DLL,用到了string,uses sharemem 编译通过在本机运行没问题,打包后安装在其他机器上则提示 无法找到borlndmm.dll Delphi2006~Delphi201 ...

  9. c++ 6.0 没有找到mspdb60.dll 问题的解决

    没有找到mspdb60.dll 问题的解决 首先检查一下目录的设置(工具->选项->路径):   Executable files 设在:   \Microsoft Visual Stud ...

最新文章

  1. 多项式乘法c语言,急!!!!c语言:求n次多项式的加法和乘法
  2. oracle对日期date类型操作的函数
  3. JavaScript中的原型,对split方法的重写
  4. ABAP-读取应用服务器目录信息的函数代码摘抄
  5. 吴恩达机器学习笔记11-梯度下降法实践2-学习率
  6. 计算机管理员受限用户,如何设置权限,使管理员能上网,而受限用户却不能上网?...
  7. 印度:10美元电脑与全民免费上网
  8. ymPrompt.js消息提示组件 详解 .
  9. request.getAttribute()和request.getParameter()两个方法的区别
  10. 换手率:为什么美国人不爱频繁申赎基金?
  11. android权限字符串,android-打开失败的EACCES(权限被拒绝)
  12. 2019FME博客大赛——FME在室内地图数据构建中的应用
  13. 局域网打印机怎么连接_mac连接局域网打印机
  14. 微信支付全部详细流程
  15. python爬虫区划代码表
  16. win7系统定时删除数据的批处理命令_win7如何一键清理系统垃圾|win7批处理命令清理垃圾的方法...
  17. 微信Android如何实现计步数,微信运动步数是怎样计算的?终于有人研究出来了......
  18. iOS 图标和文字自定按钮
  19. java计算机毕业设计Internet快递柜管理系统源码+mysql数据库+系统+lw文档+部署
  20. 有序的hashmap (linkedhashmap) 测试及原理

热门文章

  1. 思杰彻底简化浏览器应用的安全交付
  2. 关于office2013无法登陆的问题(出现临时服务器问.。
  3. Reporting service 技巧
  4. uva-10341-二分法
  5. percona-toolkit源码编译安装
  6. 解决gcc version 不匹配问题。
  7. Springmvc_3(SessionAttributes 将数据放入到session中)
  8. Android 创建一个新的Activity
  9. 中国电信到美国的几条海缆线路图
  10. 互联网域名解析系统DNS的工作原理及相关服务配置