views:

49

answers:

3

I'm compiling a program on my 64bit machine, but I'm not sure if it produces 32-bit or 64-bit output.. How can I check if a file is 32bit or 64bit on Windows?

+1  A: 

Just run it and have a look at the Processes tab in Windows Task Manager. If there is a *32 suffix after the process name, it's 32-bit, otherwise it's 64-bit (provided you're on a 64-bit OS).

Stefan Schultze
Well yes that'll work but it's not entirely sensible to just run a program to find out whether it's 32 or 64 bit. Also, you may not have a 64 bit machine to do that with.
kaerast
if you only have a 32bit machine then it would not run if it was a 64bit app!
JamesRyan
+1  A: 

You could run the 'file' command from linux in a cygwin environment to test.

You could also place some debug statement like 'print sizeof(int)' (schematically) to check.

Frank Meulenaar
Sounds like a terrific idea. I'm running Cygwin, but when I try using "file" it says "command not found". Is this actually available on Cygwin? If so I guess I must've forgotten to install some package..?
stiank81
See http://cygwin.com/faq/faq.setup.html#faq.setup.what-packages
Frank Meulenaar
+4  A: 

You can use GNUfile for windows.
You can run the app thru PEID Lastly (and preferred- less room for error) With either Visual Studio C++ (at least express edition minimum) or the Platform SDK installed you can use dumpbin /headers to look at the PE header values.

The first value in the file header tells you the architecture: either 0x14C for x86 or 0x8664 for x64

Jim B
Works fine! Didn't bother running it through PEID etc though. Ran with Cygwin. Works just fine. And it doesn't say 0x14C/0x86664, but PE32 for x86 and PE32+ for x64.
stiank81