2

同じプロジェクトを (何も変更せずに) ビルドすると、バイナリの異なるexe ファイルが生成されます。それらの一部の小さな領域が異なります。空のプロジェクト、バージョン情報 (およびビルドごとの自動インクリメント) がオフになっています。

なぜそれが起こるのですか?また、同じプロジェクトに対して Delphi で同等のバイナリ ファイルを生成することは可能ですか?

4

4 に答える 4

15

Windows で使用される PE 実行可能ファイル形式のさまざまな構造には、コンパイラとリンカーによって設定されるタイムスタンプが含まれます。

ファイルを後処理してこれらの値を定義済みの定数にリセットすることは可能ですが (私は正確なハッシュ値を必要とする安全な製品のためにこれを正確に行うためのツールを作成しました)、これはすぐに出荷できる実行可能ファイルでのみ行う必要があります。一部のデバッガーは、ソース ルックアップなどのためにタイムスタンプに依存しているためです。

于 2008-11-27T12:17:52.793 に答える
2

問題を「ソースに変更がない場合、コンパイルを回避するにはどうすればよいですか」に変更してみてください。対処しやすいかもしれません。

于 2008-11-27T12:15:39.677 に答える
1

コンパイラが *.exe エンコードされた時間、特別な序数(バージョン管理用)、およびおそらく他のものに挿入すると思われます:) Delphiに同等のバイナリ出力を強制的に生成させることは不可能です。

于 2008-11-27T12:05:59.180 に答える
0

実際のタイムスタンプがexeファイルにコンパイルされている可能性があります。

于 2008-11-27T12:02:25.053 に答える