如何减小Delphi dll的大小?

Ste*_*eve 7 delphi dll delphi-7 delphi-xe3

我最近从Delphi 7迁移到了Delphi XE3.

Delphi 7中的107kb的dll文件现在编译为2.7 MB.另一个是114kb,现在是4.7 MB!

这是正常的吗?我该怎么做才能减小文件大小?如果您需要更多信息,请询问.

更新:

这两个dll文件都已在发布模式下编译.

遵循梅森的建议:

4.7MB文件减少到834kb,2.7MB文件减少到2.1MB.2.1MB文件使用Generics和一个名为nExcel的外部库来生成Excel文件.虽然在文件大小较小时也使用了nExcel,但是使用泛型是代码的新增功能,我想这可能是文件大小保持相当大的原因.

Mas*_*ler 15

其中一些是不可避免的; 随着更多功能的增加,RTL变得越来越大.但是,由于在Delphi 2010中增加了扩展的RTTI,因此大量增加的原因.

您可以通过在主项目文件中将以下两行放在任何uses子句之前来解决此问题:

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$WEAKLINKRTTI ON}
Run Code Online (Sandbox Code Playgroud)

这些将导致编译器在整个项目中最小化扩展的RTTI.(请注意,这意味着您将无法使用RTTI功能.但由于这是Delphi 7项目,您可能还没有使用它.您需要阅读扩展的RTTI并查看是否可以找到有用的东西.)

  • 谢谢.RTTI,这是运行时类型信息吗?类似于C#中的反射或许? (2认同)
  • 并且不要忘记在`release`模式下编译dll,而不是在`debug`模式下,通过向可执行文件添加调试信息来增加大小. (2认同)
  • @MasonWheeler你确定把它放在主项目文件中就足够了吗?[官方文档](http://docwiki.embarcadero.com/RADStudio/XE3/en/RTTI_directive_(Delphi))声明它是一个*local*指令,我总是这样使用它,通过插入它. inc文件在我的所有单位中调用. (2认同)
  • "@Steve:如果可行的话,你可以在这里添加缩小的DLL大小作为评论吗?所以其他人至少大致知道这个调整会有什么数据.谢谢. (2认同)