使用Delphi(或者一般来说,任何工具,如果存在的话),是否可以减少exe文件的大小,删除所有不使用但是存在的代码?
(例如,存在但从未被调用的函数或过程)。
我记得使用Pascal,使用单元(没有对象),编译器只包含真正使用的过程和函数,并将从最终的exe中删除单元中的未使用的例程。
(例如,存在但从未被调用的函数或过程)。
我记得使用Pascal,使用单元(没有对象),编译器只包含真正使用的过程和函数,并将从最终的exe中删除单元中的未使用的例程。
使用Object-pascal,我记得在Delphi 1中,一个对象的所有成员都包含在exe中;
有什么改变,直到德尔福XE2?
解决方法
如果您不使用RTTI,您可以将其添加到.dpr文件的顶部(紧接在程序之后)以删除额外的RTTI信息:
{$IFOPT D-}{$WEAKLINKRTTI ON}{$ENDIF} {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
如果你想把它从所有的RTL / VCL单元中删除,那么你也需要把它们放在你的项目文件中,以便上面的设置可以生效。我不认为我会建议这样做,因为我不相信可执行大小的减少值得编译您自己的RTL / VCL的复杂性。
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}
这将剥离.exe中不需要的重定位信息。不要将其添加到DLL或包中!