2017-01-20 16 views
1

Учитывая два PE объектных файлов из cl.exe, один 32bit и 64bit один, как я могу сказать одно от другого без прибегая к UNIX утилиты и, желательно, на командной строке (cmd.exe или powershell)?Отличить 32bit из объектного файла 64bit PE генерируемого cl.exe (Visual Studio C++)

C:\> "...\VC\bin\cl.exe" -c test.c   -Fotest32.obj 
C:\> "...\VC\bin\x86_amd64\cl.exe" -c test.c -Fotest64.obj 

Если я установлю msys2 утилита file может sortof смысл его:

$ file test*.obj 
test32.obj: Intel 80386 COFF object file, not stripped, 3 sections, [...] 
test64.obj: data 

file --version является 5,28, но новее 5,25 не делает лучше. msys2 не предлагает objdump.exe, но при копировании в Linux он мог правильно сказать, эти два файла друг от друга:

$ objdump -a test64.obj 
test64.obj:  file format pe-x86-64 
$ objdump -a test32.obj 
test32.obj:  file format pe-i386 

что-то, который делает лучше, чем file и доступна через Pacman msys2, также могла быть интересно.

+2

Инструмент Microsoft является 'dumpbin'. –

+0

Двусторонний дубликат: http://superuser.com/q/358434/29943 –

ответ

2

Самый простой способ - использовать инструмент Microsoft DUMPBIN, передавая параметр /HEADERS, например.

dumpbin /HEADERS cl.exe | findstr "machine" 

Это дает следующий результат для 64-битного изображения

  8664 machine (x64) 

или следующее за 32-битного изображения

   14C machine (x86) 
        32 bit word machine 

 Смежные вопросы

  • Нет связанных вопросов^_^