zoukankan      html  css  js  c++  java
  • 减小Delphi 2010/delphi XE编译出来的文件大小

    1.禁用RTTI 
    禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了:

    { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) } 
    {$IF CompilerVersion >= 21.0} 
    {$WEAKLINKRTTI ON} 
    {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} 
    {$IFEND}

    2.realease模式编译

    3.去掉Debug信息

    4.使用upx、aspack压缩一下 
    ==================================================== 
    1.引用的单元会影响EXE和DLL的大小,把Uses中不需要的单元去掉,可以变小一些。 
    当然如果直接用SDK的方式来开发,那是最小的。

    SysUtils.pas System.pas sysinit.pas里面有很多你用不到的公用变量和类型定义,你可以 
    另起炉灶,把你的程序要用到的变量,函数,类型拷贝到另一个同名的pas文件中,编译时不用 
    Delphi的集成环境编译,用命令行dcc进行编译,注意要把你新建的基本库pas也包含进去 
    如 DCC32 -Q -DDLL System.pas sysinit.pas MyProject.dpr -M -Y -Z -$D- 
    其中system.pas sysinit.pas是从原来的pas中挖出来的一些类型定义,函数等. 

     

      一、体积测试、比较 

      环境: delphi2010 +  vclskin5.4 + dev5.0 
      1、delphi2010 单窗口 
      796KB 
      2、delphi2010 单窗口 + button + text 
      820KB 
      3、delphi2010 单窗口 + vclskin                                                                         
      1.13MB(不加载skin文件),    1.16(加载skin文件) 
      4、delphi2010 +  vclskin5.4 + dev5.0( cXbutton + cXtext) 
      1.8MB 
      5、delphi2010 +  vclskin5.4 + dev5.0( cXbutton + cXtext + cxGrid) 
      4.18MB   ------ 
      6、delphi2010 +  vclskin5.4 + dev5.0( cXbutton + cXtext + cxGrid )   +fastReport 
      5.67M  to   6.67MB 
      二、原因 
      1、delphi2010使用的wideString和RTTI 
      wideString使字符串长度变成了原来的2倍,但增长体积是有限的 
      RTTI是主要原因 
      2、dev  
      a、使用了skin 
      5.0版本当使用了QtGrid,会自动引入cxLookAndFeels, cxLookAndFeelPainters 
      有时候将unit中skin都去掉效果不大,可以重新安装dev,安装时候不选skin,可以省下2M 
      b、使用了print 
      5M to   9M 
      三、减小delphi体积的方法 
      1、关闭RTTI反射机制 
       自从Delphi2010中引入了新的RTTI反射机制后,编译出来的程序会变得很大,这是因为默认情况下 Delphi2010 给所有类都加上了反射机制。而我们的工程并不每每都需要使用到这个功能,所以对于不需要使用的地方,我们可以简单的用下面的方法禁用RTTI反射,从而大 大减小文件体积。 
      禁用的方法很简单,就是要在工程(dpr文件中。Delphi2010下项目文件是dproj文件,但dpr文件仍然是默认的编写代码的项目文件)的Uses语句前添加下面的定义就可以了: 
      { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) }  
      {$IF CompilerVersion >= 21.0}  
      {$WEAKLINKRTTI ON}  
      {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}  
      {$IFEND} 
      -------------实测,
            1.1环境下,文件大小为750KB; 
      1.2环境下,774KB; 
      1.3环境下,大小为1.10MB(加载skin文件) 
      英文:http://www.zipplet.co.uk/index.php/content/article s_programming_delphi2010rtti 
      2、关闭debug信息 (默认已关闭) 
      Project -> Options -> Linking -> Debug information -> disabled 
      测试: 
      disabled:11.6MB 
      an  disabled:31.2MB 
      四、其它方法 
      1、减小DELPHI应用程序的大小 
      http://hi.baidu.com/51elv/blog/item/5637a5cff0ef14 31f8dc6124.html 
      01) 使用加壳工具(如 UPX,ASPack 等) 
      02) 使用 KOL 
      03) 不使用VCL来编写程序 
      04) 使用 ACL (API 控制库) 
      05) 使用 StripReloc 
      06) 去除运程调试信息与 TD32 
      07) 把允许的代码写到 DLL 中 
      08) 不要在设计时把图片放置在 Form 上,而是运行时加载 
      09) 使用被压缩的图片(使用JPG 而不用 BMP) 
      10) 在 DFM 文件中减少属性 
      (参考后面的链接 "怎样使您的EXE文件更轻便") 
      11) Use the TStringList replacement by ~LOM~ 
      Use the Minireg - TRegistry replacement by Ben Hochstrasser 
      五、其他文章 
      dev编译exe 
      http://www.devexpress.com/Support/Center/p/Q243794 .aspx?searchtext=cxLookAndFeels&p=T1|P0|0
  • 相关阅读:
    CSS 实现图片灰度效果
    有关楼层滚动且对应楼层Nav导航高亮显示
    本地上传图片预览效果
    gulp.js 的安装以及使用
    ReactJS -- 初学入门
    ie8下jquery改变PNG的opacity出现黑边
    数据库操作 (4-3)
    Python之协程 (4-2)
    python 之 线程 3-29
    Python之 并发编程(3-19)
  • 原文地址:https://www.cnblogs.com/railgunman/p/5397563.html
Copyright © 2011-2022 走看看