为什么delphi的程序编译后那么大? ( 积分: 100 )

  • 主题发起人 主题发起人 zzz94
  • 开始时间 开始时间
Z

zzz94

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么delphi的程序编译后那么大?有什么办法让它编译时就很小,当然要它的运行库啊??
 
为什么delphi的程序编译后那么大?有什么办法让它编译时就很小,当然要它的运行库啊??
 
加壳 压缩 !
 
不要用VCL控件,用API写自然就小了,而且你引用的单元越多,编译出来的东西也就越大,建议你看看周爱民老师那本写delphi内核的书
 
在project的Option中设置,编译时你把Debug信息去掉就行了
 
我去壳了啊!但4M的只能编为2M
 
将uses中不需要的单元去掉。
 
能够不用FORM的尽量不用FORM,即使用FORM也不要用那些华丽的外观控件,而且不需要引用的单元也不要uses,另外加以UPX之类的压缩,还有使用DLL,就可以尽量减小你EXE的SIZE
 
上面所说的都不是问题的根本。Delphi程序大的根本原因是其编译的方式所造成的。尽管Delphi在编译时,将uses中不用的单元不会编译进EXE文件,但它却是以单元为单位编译的。如果你只用到了一个单元中的一个方法或就是,那么这个单元就会全部被编译进EXE文件。并且,Delphi为了实现对API函数的封装,单元一般都非常大,尤其是Forms单元。因此,要减小EXE文件的大小,最有效的办法是直接调用API函数进行编程,不要使用VCL。
 
如果只用API编写Delphi程序,一般编译后EXE只有20几K,与VB的差不多(还要看程序实现的具体功能,我只是一般地说),但别忘了VB的运行库有多大?拿VB6来说,有1兆多,而一个Delphi程序即使加入运行库编译也就200多K而已,从这一点上说还是Delphi要好一点,更何况VB程序因为是解释执行,所以运行效率比较低,即使是P代码结构,那也只是部分二进制化,可是要纯粹用API写程序,难度相当大,除非是高手,可我们这些学程序的都是从初级学起,离高手还很远,还有一点比较重要的,那就是:现在的计算机论内存、论硬盘都比以前的机器远远地好,这么点程序量有算得了什么呢?与我能编写出一个好程序相比,程序大点又算得了什么?更何况,我们还可以用Delphi方便地编写DLL呢。
附:
Photoshop.exe 大小 13.1M
Excel.exe 大小 6.82M
Winword.exe 大小 8.05M
POWERPNT。.exe 大小 4.12M
Winrar.exe 也有800多K
这么多经典程序有这么大的程序量,我们编的又算得了什么?
 
VB编译后的EXE看似小,但它却不能直接拿到一台机器上使用,需要装入大量的运行库。将这些运行库加上可执行文件,其大小要比Delphi编译后的大得多。楼上的大哥列出了这些知名软件的可执行文件大小,我想这些软件所有功能不全在Exe文件里面,许多功能包含到DLL中。以前我在单位做过一个大型营销MIS系统,一开始全做到一个项目里面,生成的EXE相当大,后来我们也采用了动态链接库,其主程序的执行文件从原来的40多M缩小到小于10M
 
后退
顶部