1

我有一个 WinCE6000 OSDesign,但由于历史原因,文件夹下有 MS 不推荐的修改和额外模块。因此,我们开始将不属于原始 MS 交付的所有内容移动到另一个文件夹 <3rdParty>。

您可能知道 WinCE 有一个复杂的构建机制,但无论如何,在我们完成重构之后,我们设法运行了 SYSGEN。以前我们强制运行 Build & SysGen 来获取 nk.bin

我们想了一种机制来确保重构后没有任何变化。验证包括将重构的构建树与已经存在的源树进行比较。我们比较了 ce.bib 文件的内容,文件的内容和数量和名称相同。但后来我们意识到有些二进制文件有不同的大小。在比较了这些 exe 和二进制文件后,我们发现文件存在差异。但这没有意义。因为我们没有修改任何源代码。我们所做的只是将一些模块移动到另一个位置并修改源文件。

我们在 Beyond Compare 和 PE 文件查看器中观察到的差异表明有时 .text 部分和有时 .data 部分是不同的。

我们希望确保重构不会通过功能影响生成的图像。我们知道有 PE 格式的时间戳,但我想它们不会导致 2K 的二进制大小。

你们中有人遇到过这样的问题吗?此致

4

1 回答 1

1

这里有一个来自 MS 的自我解释帖子。 http://support.microsoft.com/kb/164151

注意:不能保证 Visual C++ 在连续构建时生成相同的源文件时会生成相同的二进制映像。但是,您可以保证 EXE(或 DLL)在执行时的行为方式完全相同,所有其他条件都相同。编译和链接选项以及链接顺序在两个二进制图像是否相等比较中起作用。

于 2013-01-09T12:11:15.923 回答