# Re: 真后悔学VB，有无将VB编译成C或其他程式语言之工具程式

Posted by XGT on July 19, 1999 at 07:39:18:

In Reply to: 真后悔学VB，有无将VB编译成C或其他程式语言之工具程式 posted by 后悔的人 on July 18, 1999 at 12:20:49:

在看了各位间的讨论,觉得众说纷云,小弟道是有一点小建
议,其实vb本身编译后的执行档并不会太大,倒是物件太多
以致安装档内的附加元件过多,程式便显肥大,这之中倒是有一些比较消极的作法,也是我较常用到的:
1.在撰写程式时若是一般之小程式,便尽量少用到外部的物件(如内定载入之OLE AUTOMATION,便很少在小程式中用到,便可至设定引用项目去将之取消掉),尽量用一些vb已提供之物件,因为这些引用到的物件将会在制作安装档时被加入,程式便瘦不了了!!
2.便是在程式行档内少引用图型档至控制项,如是未压缩格式之BMP档便先将之转成压缩后的JPG档,因为VB在编译
时会将这些引用的图档加至执行档中,无形中也增加了程式的大小!
3.在撰写程式时尽量少用控置项,VB在控制项存取时其效率会有所降低,而控制项也较占记忆体,编译后的执行档也会较大,如有大量控制项的引用时,改用动态阵列的引用会是比较好的选择!
4.运用副程式来减少程式码的重覆,会是个不错的选择,程式亦较好维护,当在撰写较大型的程式时更显重要,但副程式本身也比较慢,若是撰写执行速度较无重要之程式时,便较无大碍..
5.令外使用WIN-API也是个很好的方案,唯独API较难理解,参考文献也不是很多,但可补足外部物件的功能,如要拨放CD的话VB本身有MCI控制项,但如只引用之中的某几个功能便将一整个MCI控制项都给加了进来,不是有点多余的吗?若是改用API的mciSendString.或mciSendCommand来处理的话,便只需引用到winmm.dll中的一两个函数即可,而API
的好处就是每一台WIN32系统的电脑中都具备了这些动态联结库(dll),不需担心别人的电脑有没有,除非他的OS是其它非WIN32的OS(MAC,UNIX,DOS,WIN3.1,OS/2,LINUNX..)
才有问题,而API函式本身又是以C为架构其执行效率又是没问题,所以在下认为VB+WIN-API是写程式的最加组合,相辅相成.
6.最后还有一个小经验与大家分享,就是由VB开发出来的程式,不一定就要得用安装程式精灵,才能搬至另一台没有VB的电脑上执行,可先将程式编译成执行档,再至设定引用项目上去看看,除了前面三个VB本身的执行主体外,还有无其它引用的项目(OLE AUTOMATION若无引用到可取消掉),在依其位置将之COPY出来,最后再加上VB执行动态联结程式库 其中的X为其版本,vb6=MSVBVM40.DLL
,vb6=MSVBVM50.DLL,...最后再将1.执行档 + 2.外部物件+ 3.MSVBVMX0.DLL 这三样COPY到另一台电脑即可,一个最小的程式大概盖只有1.3MB,一片磁片就可以带走了,如稍嫌简陋了些可以找一些安装程式精灵把它包装一下,如CREATE INSTALL,SETUP FACTORY,...网路上都有的抓,这样便成了一个很完整,又不会太大的安装程式了!!!

Follow Ups: