【发布时间】:2012-08-06 15:42:03
【问题描述】:
我有两个 delphi 生成的同一个项目的 exe。一个exe是很久以前生成的,第二个exe是最近使用当前源代码生成的。现在这两个exe之间存在大小差异。有什么方法可以找出大小不同的原因,以及是否有任何新功能错误地添加到新 exe 中。因为exe是二进制的。我们可以转换成任何可读的格式吗?或任何其他提示/ cmets?感谢您的帮助。
注意:我没有生成第一个 exe 的源代码。所以无法比较源代码。 :(
【问题讨论】:
-
这两个可执行文件是用相同版本的 Delphi 创建的吗?现代 Delphis 生成更大的可执行文件。大小差异有多大?你怎么能没有原始的源代码?你不使用修订控制吗?既然你没有原始源代码,为什么还要关心旧的 exe?
-
是的,两个 exe 都使用相同的版本开发,两个 exe 之间的大小差异约为 10kb。我们使用版本控制,但代码不是由很久以前修改过的人签入的。 :( 因为所有企业都使用原始源代码 exe。所以试图找到原始源代码的副本,以便我可以在其上添加新功能。
-
很难看到你在这方面走得很远。你甚至不知道 exe 是如何构建的,编译器选项是什么等等。尝试反编译这两个可执行文件并查看差异。然后你可能会意识到你的任务的重要性!如果我是你,我会使用源代码并编写你想要的逻辑。如果您依赖于一个您不了解并且不知道它在做什么的程序,那么您的状态就很糟糕。收回控制权。
-
另一个影响 exe 大小的因素是第三方库。如果您在此过程中升级了组件或库,则可以重新编译相同的源并获得不同的结果。即之前,你有 VCLZip 3.0,现在你有 4.5。在没有其他源代码更改的情况下,如果您的应用使用 VCLZip,则大小会有所不同。
-
比较exe是没有意义的,尤其是另一个exe是很久以前构建的,来源和编译器设置未知。从很久以前开始,任何事情都可能发生。即使你可以比较两个 exe,你能得到什么值?请记住,它们是 exe,而不是源代码。相反,对两个 exe 进行功能测试更有价值。