2008-11-27 68 views
2

构建相同的项目(没有任何更改)生成二进制不同 exe文件:它们的一些小区域是不同的。空项目,版本信息(并在每个版本上自动递增)被关闭。为什么每个版本都会改​​变exe文件?

为什么会发生?是否有可能使德尔福为相同的项目生成二进制文件?

回答

15

Windows使用的PE可执行文件格式中的各种结构包括由编译器和链接器设置的时间戳。

可以对文件进行后处理以将这些值重置为定义的常量(我写了一个工具来为需要确切散列值的安全产品完成此操作),但这只能在现成的可执行文件上完成,因为有些调试器依赖时间戳来进行源查找等。

0

它可能是,一些实际的时间戳被编译到exe文件中。

+0

这不会提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Emile 2012-08-31 12:44:20

+0

2008年11月27日。对不起,我对SO不太熟悉,现在我不会通过我的老职位并实现它们。但我仍然确信,我的答案是答案的一部分,为什么两次编译产生不同的二进制文件。 F.E.我使用#define VERSION和timestamp生成一个version.h文件作为第一个编译步骤,并使用在调试输出中定义的文件。 – 2012-08-31 14:09:34

1

我怀疑编译器插入* .exe编码时间,特殊序数(用于版本控制),也可能是其他东西:) 不可能强制Delphi生成相同的二进制输出。

2

尝试将问题更改为“如果不对源进行任何更改,我如何避免编译”,可能会更容易处理。

相关问题