【WinCE】WinCE程序开发中出现“无法找到PInvoke DLL"Kernel32.dll"”问题的一种解决方法...

最近本人参与了一个小项目是做WinCE6.0平台上的应用,开发用的语言是C#。

 

整个开发过程中让我感到十分蛋疼,说实话用C#这样的高级语言去做嵌入式设备上的应用软件并不是种高明的选择。不但一些通用的类库比普通WINFORM少了一半,就连调用的API函数与普通台式机上的WINDOWS系统也不一样。

 

在WINCE中引用DLL然后调用其API函数比较容易出现问题就是WINCE系统经常找不到DLL文件,其原因主要是装有WINCE系统的嵌入式设备其核心是基于ARM的芯片组与普通台式机CPU不一样。因此WINCE中引用的DLL与普通WINDOWS中引用的DLL也不一样。

 

比如常用的"Kernel32.dll",在WINCE程序中引用"Kernel32.dll"就会出现“无法找到PInvoke DLL"Kernel32.dll"”这样的问题。

 

 

原来出现这类问题的原因就在于WINCE和普通WINDOWS两者API函数所在的DLL库是不一样的。

 

在WINCE中,"Coredll.dll"对应了"Kernel32.dll"和"User32.dll"这两个文件了,所以将"Kernel32.dll"换成"Coredll.dll"问题就解决了。

 

         // 设置系统时间
        [DllImport( " Coredll.dll " )]
        
public   static   extern   bool  SetSystemTime( ref  SystemTime sysTime);

 

此外"Coredll.dll"和"Kernel32.dll"中的API函数也是有区别的,并不能完全划等号。

 

具体"Coredll.dll"中的API函数可以查看这里:

 

http://notbig.blog.163.com/blog/static/213162862010111805228589/

转载于:https://www.cnblogs.com/youuuu/archive/2011/07/04/2097557.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值