views:

110

answers:

5

I intend to start writing a 64 Bit Scientific Computing Application (signal processing) for Windows using Microsoft Visual Studio 2008. What should I have ready as far as a development platform is concerned?

How would it be different from 32 Bit development? What could be the porting issues for a 32 Bit version that I already have (ok - this might too early to ask.. even before I start compiling)?

As you might have guessed, I am looking for general directions. All pointers would be much appreciated! :)

Thanks in advance..

+2  A: 

The development in 32 bit and 64 bit is the same, as far as the managed code (.NET) development is concerned, as long as you compile your code usign ANY CPU option. So all your code developed on your machine will run just fine on both 32 bit and 64 bit platform.

If you are doing native C++ development, then you might have to compile according to specific platform and compile twice ( one in x86 and another in x64).

Ngu Soon Hui
+1  A: 

The most important difference is size of pointer. On 32bit its 32 bit and on 64 its 64bit. int and long remain same.

Rohit
+3  A: 

When installing Visual Studio 2008, pay attention to tick the box that installs 64bit compiler and tools as it's not by default.

Then you can refer to these articles for guides on 32 to 64bit migration:

Gregory Pakosz
Very helpful. Thanks!
+1  A: 

First you have to know that windows 64 bit can run both 64 bit and 32 bit in emulation mode WOW64 so you'll have to decide if you want to allow that or you are interested only in 'pure' 64 bit.
Assuming you want to run in both modes you should take the following points into account:

  1. If your application uses the registry you have to consider that few keys like HKLM has two entries. For example HKEY_LOCAL_MACHINE\SOFTWARE for 64 bit programs and HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node for 32 bit programs. Similar to that if your application uses the System32 folder you'll now have to deal with two folders: System32 for 64 bit and SysWOW64 for 32 bit.

  2. If you are using manage code you should choose how to build the application. If its doing interop calls into unmanaged code than you need to build it twice: one with the platform set to x64 and one with the platform set x86. If you don't have calls to unmanaged code than you can build it as AnyCPU platform.

  3. And obviously more memory (every pointer takes 8 bytes instead of 4 bytes)

Ohad Horesh
Thanks! Much helpful. Though currently it is all native c++, some day I just might change the UI to C# or something and calculation part to C++ (need to work out on that).
A: 

All the answers to this question will help you.

http://stackoverflow.com/questions/2450275/windows-development-x86-to-x64-transition/2540682

Stephen Kellett