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 here からの自己説明の投稿があります。 http://support.microsoft.com/kb/164151

注: 連続するビルドで同じソース ファイルをビルドする場合、Visual C++ が同じバイナリ イメージを生成するという保証はありません。ただし、実行時に EXE (または DLL) がまったく同じように動作し、他のすべての条件が同じであることが保証されています。コンパイルとリンクのオプションとリンクの順序は、2 つのバイナリ イメージが同等に比較されるかどうかに影響します。

于 2013-01-09T12:11:15.923 に答える