最近对Pascal语言有点兴趣,于是就着手研究了一番,也发现了它的确有自己独有的魅力。而自己目前所做的项目中,有很多都很CE系统有关,于是本着好奇的心理,到网上找了一番,让我发现了Lazarus,基于Free Pascal的一个IDE,其实很像Delphi之前SDI的那种IDE,不过还是有很多不同。
Lazarus号称是编写一次代码,即可编译成不同的OS版本,这样的口号蛮好听的,不过实际上却还是会有很大的差距。本篇日志则是探讨一下,Lazarus基于FPC的WINCE程序设计,起码,我们得能把一个Form或者一个MessageBox在CE上显示出来吧!
首先我们得把IDE下载下来,工欲善其事,必先利其器嘛!
进入这个镜像地址:http://mirrors.iwi.me/lazarus/
然后按照你使用的系统来下载,我使用的是Windows7 32位的,所以我下载了2.6.1版本的,如下图所示:
其中一个是用于交差编译的WINCE扩展包,一个是它的主IDE。相信通过图片上的文字应该是可以区分出来的。
然后我们先安装主IDE,在我所下载下来的,便是:Lazarus-1.1-37902-fpc-2.6.1-20120709-win32.exe 这个文件,
然后安装:Lazarus-1.1-38198-fpc-2.6.1-20120808-cross-arm-wince-win32.exe。
好了,一切就绪,安装完后桌面上会有一个快捷方式,我们运行它,我安装之后,运行后它提示一个错误,不知道大家会不会出现这样的问题,它提示找不到FPC的源码,我的安装路径是:D:\lazarus,我找了下,发现它的源码路径是在fpc目录下,而不是fpc下那个版本号的文件夹里,于是我把它的路径改了下:
然后点击Start IDE启动开发环境。
启动之后,它默认的给我们创建了一个项目,我们可以通过Project->Close Project关闭它,然后新建一个Project,这里我们新建的是Application,然后我们将它保存到一个目录下,这时候它是一个WIN32的应用程序,我们要将它改成WINCE的目标平台程序,方式如下:
Project->Project Options->Build Modes
然后在Code Generation下,更改如下图:
其中Arm为CE的CPU架构,可以在CE的系统信息里面看到:
上图是我使用的CE系统信息,这样配置完毕,我们就可以编译程序了,如果不出意外程序编译成功,然后拷贝到CE上来运行,如果还不出意外的话,应该是没有任何效果的,但是程序它的确是运行了。发生这样的问题的原因,是我们的窗体跑到CE屏幕的外面去了,所以我们要把窗体的属性修改一下:
这些编译,再拷贝进CE应该就可以出现我们预想的窗体了:
但是这个程序体积实在是太大了:
下面来给它瘦身,在你的Lazarus安装目录下,也就是我的这个目录下:D:\lazarus\fpc\2.6.1\bin\i386-win32有一个arm-wince-strip.exe文件,这个程序可以帮我们的程序瘦身,为了方便我们在命令行下调用,我们把这个路径设置到系统的环境变量里:
以Windows7为例,右键“计算机”->属性->高级系统设置->“高级”标签里->环境变量
我们找到PATH这个:
然后点编辑,在最末加上那个路径,记得要用分号将前面的路径分开,然后确定就好了。
然后在我们的项目路径下新建一个批处理文件“publish.bat”,编辑内容如下:
arm-wince-strip.exe project1.exe del upxed.exe upx -9 -o upxed.exe project1.exe
然后运行这个批处理,我们得到一个upxed.exe文件,这个文件已经瘦身过了,且经过了upx的压缩,upx也包括在上诉的路径里面了,所以不必再下载。
我们再看看这个文件的大小:
这个大小还是可以接受的了。最后我们不忘记Hello World,来试试吧:
procedure TForm1.FormCreate(Sender: TObject); begin ShowMessage('Hello World'); MessageBox(Handle, 'Hello World', 'MKiller', MB_OK or MB_ICONINFORMATION); end;
不要忘记Use Windows这个单元文件,然后编译在项目的目录下,双击那个批处理,拷贝upxed.exe到CE中运行:
可以看出,默认的那个ShowMessage是非常坑爹的,尽然使用文件名做得标题。
好了,这篇文章就到这里了,给大家开辟了这样的通道,接下来怎么玩,就看大家的各自发挥了。