Visual C++ 2010:确定性构建?如何区分 exe/dll 文件? [复制]

Posted

技术标签:

【中文标题】Visual C++ 2010:确定性构建?如何区分 exe/dll 文件? [复制]【英文标题】:Visual C++ 2010: deterministic build? How to diff exe/dll files? [duplicate] 【发布时间】:2011-04-26 14:04:55 【问题描述】:

可能的重复:Deterministic builds under Windowscomparing products of builds in release

Visual Studio 2010 C++ 构建是否具有确定性?也就是说,给定相同的源代码输入和相同的编译/链接设置,它是否总是会产生相同的二进制指令?

我很欣赏可能有各种日期戳和其他与编译系统相关的字段被写入二进制 EXE 或 DLL 文件。所以我的问题的第二部分是:当diffing 此类文件时,我如何忽略这些“可变”元素?

我正在尝试创建一个工具来比较来自不同构建迭代的二进制工件,并告诉我它们在功能上是否等效。

【问题讨论】:

看到这些问题***.com/questions/319864/…***.com/questions/1180852/…***.com/questions/2832783/compare-two-dlls 从技术上讲,这不是一个完全重复,因为最初的问题是关于 VS2005 而这是关于 VS2010。从理论上讲,答案可能会有所不同。在实践中,我不认为它们是,但我没有任何数据来支持它。 【参考方案1】:

您可以使用 dumpbin 命令跳过其他信息,例如时间戳。试试

dumpbin /rawdata 

【讨论】:

以上是关于Visual C++ 2010:确定性构建?如何区分 exe/dll 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio 2010 中构建 C++ 项目

基于 microsoft visual c++ express 2010 的 64 位构建

如何在Visual C++中构建libigl教程的102个例子?

如何在运行时确定您的 C++ 应用程序何时附加了 Visual Studio 调试器?

如何确定为啥 Visual Studio 在构建解决方案时可能会跳过项目

Visual C++ 2010 Express 不生成 DLL 文件