VS2008 开发的Wince程序 部署运行时出现UnmarshalStructInfoForm 错误
前年用vs2008开发wince 追溯程序的时候,因为人家设备提供商给了技术支持,而且程序一路使用都比较顺利,除了无线条码打印开发遇到点困难之外。再有就是一开是用wince上的sql server存储数据,但是后来发现这是一个严重的错误,因为设备是分布在各个工厂,而且wince 这个系统冷启动之后什么都恢复了,这里说一下我开始用的设备是mc3090,所以后来考虑使用webservice来做这个数据 访问和存储的,这样可以实施分布式同步。
可是最近,公司成品仓库也要使用移动设备出库,所以也买了一个同样的设备,当我帮助销售组在设备上开发布置的时候,我考虑都没有考虑就把程序布置上去了,可是一运行不行错了。运行到myreader.Actions.Enable的时候,出现了UnmarshalStructInfoForm错误,但是网上找好久的,都没有有解决答案,而且很多开发者因为自己解决了这个问题,很简单的就讲解一下。
不过我也找到了根本原因那就是:我现在MC3100是MC3090的升级版,系统是wince6.0的而之前是5.0的。说要下载emdk,EMDK其实是SMDK的一个升级版,这里我就很纳闷,你说软件至少要有一个向前兼容吧,也许跟android一样2.3到4.0的时候也会来个质的飞跃,但是android是性能上的提升啊。
好吧速度去找emdk的下载地址,果然网上有很多,去摩托罗拉的官网吧,真是病急乱投医下载了一个EMDK for .NET v2.1,悲剧了,按照网上的步骤,怎么也没有解决,有点气馁啊。
终于在msdn上找到答案了:http://social.msdn.microsoft.com/Forums/zh-CN/windowsembeddedcezhchs/thread/fce5059a-7f59-4ae2-b58f-f1edca29df47,人家说要装emdk,我一开始以为要装到wince上,但是想想不对,java c#开发sdk都是装在我们电脑上的,而且如果装在设备上,冷启动不是要重装吗。
下载emdk:https://docs.symbol.com/KanisaPlatform/Publishing/465/13209_f.html?userId=37
然后装电脑上,赶快运行看看吧。。
1 using System; 2 using System.Linq; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace test1 11 { 12 public partial class Form1 : Form 13 { 14 Symbol.Barcode.Reader myReader; 15 Symbol.Barcode.ReaderData myReaderData; 16 public Form1() 17 { 18 myReader = new Symbol.Barcode.Reader(); 19 myReaderData = new Symbol.Barcode.ReaderData( 20 Symbol.Barcode.ReaderDataTypes.Text, 21 Symbol.Barcode.ReaderDataLengths.DefaultText); 22 myReader.Actions.Enable(); 23 myReader.Actions.Read(myReaderData); 24 InitializeComponent(); 25 } 26 } 27 }
好期待啊,应该完成了吧,可是,错误还是出现了,好气馁啊。
搜索继续找答案,找到了,我们还是要在设备上安装一个组件symbol.all.arm.cab,找到我们emdk的安装目录:
D:\Program Files\Motorola EMDK for .NET\v2.5\Windows CE\MassDeployment\CE.NET,下面有我们需要安装的组件。
把这个组件拷贝到我们wince设备上,然后在设备上安装,如果是安装emdk for .net 2.1的时候会提示与系统不兼容,安装完之后,我们还要把两个程序集拷贝到我们项目下面(这个一般在wince \windows目录下面),Symbol.ddl,Symbol.Barcode.ddl。然后再运行上面这段程序,终于成功了(现在想想这种打补丁的方式开发系统还是真讨厌,不过目前我们软件开发好多都是打补丁式的升级)。最近老忙了,幸好周末有时间,记录下来,希望对大家有帮助。