【问题标题】:How can I reduce the size of my Delphi dll's?如何减小我的 Delphi dll 的大小?
【发布时间】:2012-10-08 01:25:13
【问题描述】:

我最近从 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 的文件利用了泛型和一个名为 nExcel 的外部库,用于生成 Excel 文件。虽然在文件大小较小时也使用了 nExcel,但使用泛型是代码的新增功能,我猜这可能是文件大小保持相当大的原因。

【问题讨论】:

  • 确保在release模式下编译你的dll并使用{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} {$WEAKLINKRTTI ON} 从你的dll中删除扩展的RTTI信息
  • 谢谢,我试试看。

标签: delphi dll delphi-7 delphi-xe3


【解决方案1】:

其中一些是不可避免的;随着更多功能的添加,RTL 变得更大。然而,这个大小的增加很大程度上是由于 Delphi 2010 中添加了扩展的 RTTI。

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

{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$WEAKLINKRTTI ON}

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

【讨论】:

  • 谢谢。 RTTI,这是运行时类型信息吗?可能类似于 C# 中的反射?
  • 并且不要忘记在release 模式下编译dll,而不是在debug 模式下编译,通过向可执行文件添加调试信息会大大增加大小。
  • @MasonWheeler 你确定把它放在主项目文件中就足够了吗? Official documentation 声明它是一个 local 指令,我总是这样使用它,将它插入到我所有单元中调用的 .inc 文件中。
  • "@Steve:如果可行,您能否在此处添加减小的 DLL 大小作为评论?以便其他人至少大致知道此调整的预期数字。谢谢。
  • @arnaud 顶部的 .dpr 文件就够了
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2011-09-03
  • 2016-01-17
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多