特定のディレクトリ内のすべての DLL ファイルが特定のビルド タイプであることを確認するテスト スクリプトまたはプログラムを作成したいと考えています。
これを SDK のビルド プロセスの最後にサニティ チェックとして使用し、64 ビット バージョンに 32 ビット DLL ファイルが含まれていないことを確認します。
DLL ファイルを見て、そのタイプを判別する簡単な方法はありますか?
このソリューションは、xp32 と xp64 の両方で機能するはずです。
特定のディレクトリ内のすべての DLL ファイルが特定のビルド タイプであることを確認するテスト スクリプトまたはプログラムを作成したいと考えています。
これを SDK のビルド プロセスの最後にサニティ チェックとして使用し、64 ビット バージョンに 32 ビット DLL ファイルが含まれていないことを確認します。
DLL ファイルを見て、そのタイプを判別する簡単な方法はありますか?
このソリューションは、xp32 と xp64 の両方で機能するはずです。
大まかな方法は、各 DLL の Visual Studio ツールから headers オプションを指定して dumpbin を呼び出し、適切な出力を探すことです。
ダンプビン/ヘッダー my32bit.dll PE 署名が見つかりました ファイルの種類: DLL ファイルヘッダーの値 14C マシン (x86) 1 セクション数 45499E0A タイム デート スタンプ Thu Nov 02 03:28:10 2006 0 シンボル テーブルへのファイル ポインタ 0 シンボル数 オプションヘッダのE0サイズ 2102の特徴 実行可能 32ビットワードマシン DLL オプションのヘッダー値 10Bマジック#(PE32)
その出力には、Paul が言及した 14C 値を含む、32 ビット DLL であるといういくつかの手がかりが見られます。スクリプトで簡単に検索できるはずです。
Cygwin (または MobaXTerm、または Windows 用の Git Bash、または WSL など) がインストールされている場合 (さまざまな理由からこれを強くお勧めします)、DLL で「file」ユーティリティを使用できます。
file <filename>
次のような出力が得られます。
icuuc36.dll: MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit
Dependency Walker はすべてを (ほぼ) 教えてくれます。 http://www.dependencywalker.com/
「インストール」するのではなく、取得して展開し、exec を実行するだけです。x32 または x64 Windows モジュール|アプリケーションで動作します。
私が思い出したように、すべての依存関係、つまり dll モジュール、および appl. 完全なx64、x32(x86)、またはそれぞれのビットであるかどうかを確認できる依存関係の合計です。
モジュールが構築された CPU のタイプは、「CPU」列にあります。ほとんどの 64 ビット AP はまだ少しずつですが、32 ビット AP はすべて x86 です。
オタク/プログラマー向けの美しいプログラムで、無料です...
私はまさにそれを行う非常に単純なツールを作成しました - それは PE Deconstructor と呼ばれます。
起動して DLL ファイルをロードするだけです。
上記の例では、ロードされた DLL は 32 ビットです。
ここからダウンロードできます (私は 64 ビット バージョンでコンパイルされた ATM しか持っていません):
https://files.quickmediasolutions.com/exe/pedeconstructor_0.1_amd64.exe
古い 32 ビット バージョンは、
https ://dl.dropbox.com/u/31080052/pedeconstructor.zip から入手できます。