Wince6.0模拟器上的wince程序不能访问PC机的webservice,wince程序是否可以调用windows下的DLL

时间:2022-10-16 17:37:25
如题,我最近学习开发一个wince程序,因为之前对这方面从来没接触过,所以可以说是一个小白,现在暂时出现了两个问题无法解决。
     问题一:我用wince6.0模拟器运行PC机上写的一个wince程序,就是简单的调用一个发布在局域网的webservice,调用时出现报错,报错内容为“WebException”。这个问题我补充说明下,第一点是wince6.0模拟器已经可以访问外网,但是不能访问内网的webservice;第二点是wince6.0模拟器通过Microsoft DeviceCenter同步时,wince6.0模拟器的IP地址一直默认为192.168.55.101,同时不能修改wince6.0模拟器的IP地址,不然不能连接到Microsoft DeviceCenter。
     问题二:wince程序调用windows下C#写的DLL时报错,报错内容为“无法找到 PInvoke DLL“POSDll.dll”中的入口点“Prn_Open””,POSDll.dll为调用的DLL,Prn_Open为DLL里面的函数。试过网上的几个办法比如将DLL拷到EXE文件的同目录下,修改DLL的“复制到输出目录”为始终复制等都一一报错。
    最后说下本机的环境:系统:win 7旗舰版,开发工具:VS2008,模拟器:wince6.0SDK

13 个解决方案

#1


本帖最后由 91program 于 2013-10-22 17:52:55 编辑
模拟器可以上网,就能访问 webservice。网络网,模拟器应该是访问不了的!

WinCE 程序是不可以调用 Windows 下的DLL 

#2


非常感谢回帖!
我现在的情况就是模拟器可以上网但是就是不能访问PC机发布的webservice,PC机发布的webservice也在局域网的其他机器上测试过了没问题。我也看到网上一些例子确实是可以访问,就不知道我这个为什么不能访问了。
 wince程序有什么办法调用C#编写的托管的DLL吗?

#3


引用 1 楼 91program 的回复:
模拟器可以上网,就能访问 webservice。网络网,模拟器应该是访问不了的!

WinCE 程序是不可以调用 Windows 下的DLL 


非常感谢回帖!
我现在的情况就是模拟器可以上网但是就是不能访问PC机发布的webservice,PC机发布的webservice也在局域网的其他机器上测试过了没问题。我也看到网上一些例子确实是可以访问,就不知道我这个为什么不能访问了。
 wince程序有什么办法调用C#编写的托管的DLL吗?

#4


PC机发布的webservice在局域网,是不能访问的原因。因为你从模拟器去 PING 你 Serve 所在的服务器应该是不通的。

#5


引用 4 楼 91program 的回复:
PC机发布的webservice在局域网,是不能访问的原因。因为你从模拟器去 PING 你 Serve 所在的服务器应该是不通的。


模拟器里面不能执行ping命令的,但确实应该是不能PING通的,不过可以通过PC的网络上外网,同时wince6.0这个模拟器的IP默认为192.168.55.101不能修改,不然就不能连接到Microsoft DeviceCenter。我想问下是确实是模拟器无法连接PC机的webservice,还是可能是我的模拟器配置网络方面有问题,从来没搞过这块的东西所以把握不到问题的根本原因。

#6


wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了

#7


引用 6 楼 brantyou 的回复:
wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!

#8


引用 7 楼 cai_bo 的回复:
Quote: 引用 6 楼 brantyou 的回复:

wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!



那试试把你PC机的IP地址修改成与模拟器的IP地址同一个段,看看如何。修改之后,估计PC不能访问外网

#9


引用 8 楼 brantyou 的回复:
Quote: 引用 7 楼 cai_bo 的回复:

Quote: 引用 6 楼 brantyou 的回复:

wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!



那试试把你PC机的IP地址修改成与模拟器的IP地址同一个段,看看如何。修改之后,估计PC不能访问外网


这种方式同样是不能PING通的,采用同步的方式模拟器的IP固定为192.168.55.101不能修改,是不是模拟器根本就无法访问局域网?

#10


引用 9 楼 cai_bo 的回复:
Quote: 引用 8 楼 brantyou 的回复:

Quote: 引用 7 楼 cai_bo 的回复:

Quote: 引用 6 楼 brantyou 的回复:

wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!



那试试把你PC机的IP地址修改成与模拟器的IP地址同一个段,看看如何。修改之后,估计PC不能访问外网


这种方式同样是不能PING通的,采用同步的方式模拟器的IP固定为192.168.55.101不能修改,是不是模拟器根本就无法访问局域网?


你使用模拟器来调比较麻烦,如果你有wince的设备的话,用USB同步连接上之后就可以访问了,或者连接上wifi,就会处于局域网中

#11


引用 楼主 cai_bo 的回复:
如题,我最近学习开发一个wince程序,因为之前对这方面从来没接触过,所以可以说是一个小白,现在暂时出现了两个问题无法解决。
     问题一:我用wince6.0模拟器运行PC机上写的一个wince程序,就是简单的调用一个发布在局域网的webservice,调用时出现报错,报错内容为“WebException”。这个问题我补充说明下,第一点是wince6.0模拟器已经可以访问外网,但是不能访问内网的webservice;第二点是wince6.0模拟器通过Microsoft DeviceCenter同步时,wince6.0模拟器的IP地址一直默认为192.168.55.101,同时不能修改wince6.0模拟器的IP地址,不然不能连接到Microsoft DeviceCenter。
     问题二:wince程序调用windows下C#写的DLL时报错,报错内容为“无法找到 PInvoke DLL“POSDll.dll”中的入口点“Prn_Open””,POSDll.dll为调用的DLL,Prn_Open为DLL里面的函数。试过网上的几个办法比如将DLL拷到EXE文件的同目录下,修改DLL的“复制到输出目录”为始终复制等都一一报错。
    最后说下本机的环境:系统:win 7旗舰版,开发工具:VS2008,模拟器:wince6.0SDK



问题找到了,之前说的模拟器可以上外网不能访问局域网的webservice,其实是能访问的,是我发布的webservice有点问题,我发布的webservice绑定的时候IP地址指定了一个具体的IP地址,把IP地址选择全部未分配就可以访问了,webservice发布这块不是很懂所以不太清楚这个原理。同时需要注意的是:Microsoft DeviceCenter的连接设置的这台计算机已连接到(T)选项需要经常改变状态否则也可能导致不能上网,这个问题可能是Microsoft DeviceCenter没有保存状态,具体也不清楚,操作的时候注意多试几下!

#12


PC上的IP设置为127.0.0.1就可以了

#13


楼主问题解决了吗?我也碰到类似的问题,不知道怎么搞.

#1


本帖最后由 91program 于 2013-10-22 17:52:55 编辑
模拟器可以上网,就能访问 webservice。网络网,模拟器应该是访问不了的!

WinCE 程序是不可以调用 Windows 下的DLL 

#2


非常感谢回帖!
我现在的情况就是模拟器可以上网但是就是不能访问PC机发布的webservice,PC机发布的webservice也在局域网的其他机器上测试过了没问题。我也看到网上一些例子确实是可以访问,就不知道我这个为什么不能访问了。
 wince程序有什么办法调用C#编写的托管的DLL吗?

#3


引用 1 楼 91program 的回复:
模拟器可以上网,就能访问 webservice。网络网,模拟器应该是访问不了的!

WinCE 程序是不可以调用 Windows 下的DLL 


非常感谢回帖!
我现在的情况就是模拟器可以上网但是就是不能访问PC机发布的webservice,PC机发布的webservice也在局域网的其他机器上测试过了没问题。我也看到网上一些例子确实是可以访问,就不知道我这个为什么不能访问了。
 wince程序有什么办法调用C#编写的托管的DLL吗?

#4


PC机发布的webservice在局域网,是不能访问的原因。因为你从模拟器去 PING 你 Serve 所在的服务器应该是不通的。

#5


引用 4 楼 91program 的回复:
PC机发布的webservice在局域网,是不能访问的原因。因为你从模拟器去 PING 你 Serve 所在的服务器应该是不通的。


模拟器里面不能执行ping命令的,但确实应该是不能PING通的,不过可以通过PC的网络上外网,同时wince6.0这个模拟器的IP默认为192.168.55.101不能修改,不然就不能连接到Microsoft DeviceCenter。我想问下是确实是模拟器无法连接PC机的webservice,还是可能是我的模拟器配置网络方面有问题,从来没搞过这块的东西所以把握不到问题的根本原因。

#6


wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了

#7


引用 6 楼 brantyou 的回复:
wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!

#8


引用 7 楼 cai_bo 的回复:
Quote: 引用 6 楼 brantyou 的回复:

wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!



那试试把你PC机的IP地址修改成与模拟器的IP地址同一个段,看看如何。修改之后,估计PC不能访问外网

#9


引用 8 楼 brantyou 的回复:
Quote: 引用 7 楼 cai_bo 的回复:

Quote: 引用 6 楼 brantyou 的回复:

wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!



那试试把你PC机的IP地址修改成与模拟器的IP地址同一个段,看看如何。修改之后,估计PC不能访问外网


这种方式同样是不能PING通的,采用同步的方式模拟器的IP固定为192.168.55.101不能修改,是不是模拟器根本就无法访问局域网?

#10


引用 9 楼 cai_bo 的回复:
Quote: 引用 8 楼 brantyou 的回复:

Quote: 引用 7 楼 cai_bo 的回复:

Quote: 引用 6 楼 brantyou 的回复:

wince肯定不能调用windows下的dll,这个不用试了,针对的CPU架构都不一样的。

至于你的模拟器不能访问PC的webservice是因为你的模拟器IP跟PC的IP不在同一个段上,即不能构成局域网。
而且你PC的webservice也没有提供外网访问,这就导致wince通过外网IP找不到你的webservice。你可以把你的PC开个端口,把webservice部署出去,让外网可以访问就OK了


现在已经测试过两种情况了,第一种:通过Microsoft DeviceCenter6.1(win7系统)或者Microsott ActiveSync 4.5(windows XP系统)同步模拟器和PC机,出现的情况是模拟器的IP和PC的IP不在一个网段,所以无法访问局域网的webservice,但是模拟器可以上外网。第二种:只能在XP系统下起作用,win7系统好像不行。安装一个虚拟网卡驱动(Virtual Machine Network Driver for Microsoft Device Emulator),通过虚拟网卡的方式连接PC不使用Microsott ActiveSync 4.5,这个情况出现状况是模拟器可以设定一个固定IP,但是不能访问局域网和外网,当前PC机可以ping通模拟器的IP,但是局域网其他的PC不能ping通模拟器的IP。

   至于把webservice部署成让外网可以访问确实能解决这个问题,但是有些webservice是不能让外网访问的,所以还是希望能在局域网里面来访问。求指导啊,这个问题困扰好多天了,再不能解决估计要被炒鱿鱼了!



那试试把你PC机的IP地址修改成与模拟器的IP地址同一个段,看看如何。修改之后,估计PC不能访问外网


这种方式同样是不能PING通的,采用同步的方式模拟器的IP固定为192.168.55.101不能修改,是不是模拟器根本就无法访问局域网?


你使用模拟器来调比较麻烦,如果你有wince的设备的话,用USB同步连接上之后就可以访问了,或者连接上wifi,就会处于局域网中

#11


引用 楼主 cai_bo 的回复:
如题,我最近学习开发一个wince程序,因为之前对这方面从来没接触过,所以可以说是一个小白,现在暂时出现了两个问题无法解决。
     问题一:我用wince6.0模拟器运行PC机上写的一个wince程序,就是简单的调用一个发布在局域网的webservice,调用时出现报错,报错内容为“WebException”。这个问题我补充说明下,第一点是wince6.0模拟器已经可以访问外网,但是不能访问内网的webservice;第二点是wince6.0模拟器通过Microsoft DeviceCenter同步时,wince6.0模拟器的IP地址一直默认为192.168.55.101,同时不能修改wince6.0模拟器的IP地址,不然不能连接到Microsoft DeviceCenter。
     问题二:wince程序调用windows下C#写的DLL时报错,报错内容为“无法找到 PInvoke DLL“POSDll.dll”中的入口点“Prn_Open””,POSDll.dll为调用的DLL,Prn_Open为DLL里面的函数。试过网上的几个办法比如将DLL拷到EXE文件的同目录下,修改DLL的“复制到输出目录”为始终复制等都一一报错。
    最后说下本机的环境:系统:win 7旗舰版,开发工具:VS2008,模拟器:wince6.0SDK



问题找到了,之前说的模拟器可以上外网不能访问局域网的webservice,其实是能访问的,是我发布的webservice有点问题,我发布的webservice绑定的时候IP地址指定了一个具体的IP地址,把IP地址选择全部未分配就可以访问了,webservice发布这块不是很懂所以不太清楚这个原理。同时需要注意的是:Microsoft DeviceCenter的连接设置的这台计算机已连接到(T)选项需要经常改变状态否则也可能导致不能上网,这个问题可能是Microsoft DeviceCenter没有保存状态,具体也不清楚,操作的时候注意多试几下!

#12


PC上的IP设置为127.0.0.1就可以了

#13


楼主问题解决了吗?我也碰到类似的问题,不知道怎么搞.