Building 64bit applications with VC++

This is an on going topic for quite some time. I am going to start answering it today and add additional information as I have more time.

There are three possible solutions:

(A) The Platform SDK for Windows Server 2003 SP1 . This PSDK has a toolset and compilers (although no IDE) that target both x64 and Itanium. These tools include the C/C++ compiler/linker and CRT/STL/MFC/ATL that are currently shipped with the OS. These libraries can be seen as a modification of libraries from VC6.0. Using the PSDK for Win2k3 SP1 it is possible to build 64bit code for both x64 and IA64, but using PSDK for Win2k3 (also often called February 2003 PSDK) one can only build code for IA64. One can download PSDK for Win2k3 from https://www.microsoft.com/msdownload/platformsdk/sdkupdate/. Pre-released builds of the PSDK for Win2k3 is available for MSDN subscribers, https://msdn.microsoft.com/subscriptions/downloads/

(B) There also exists the Visual C++ 7.1 64bit SDK for Visual Studio 2003. This SDK contains MFC/ATL/CRT libraries and cross-platform compiler that can be used to build 64bit with VS2003. This SDK helps users maintain source compatibility between VS2003 32bit code base and 64bit. However it has a more restrictive license agreement and because of this it is available on per request. Also this SDK depends on PSDK in option (A), as it needs Windows headers and libraries. You can read more about this here https://support.microsoft.com/default.aspx?scid=kb;en-us;875446

(B) After release of Visual Studio 2005, VC++ 7.1 64bit SDK is not available and not supported. Please use Visual Studio 2005 in building 64bit Visual C++ applications.

(C) Visual Studio 2005. As you may know, Microsoft has not release this version of VS. It is on its way and coming later this year. Using VS2005 it is possible to build 64 bit code for both x64 and IA64 using the new versions of libraries and all new features added to the compiler. This is the ONLY way to build 64bit managed code. Using VS2005 is the option I personally recommend to my customers. However in some cases products have to be released before release of VS2005 and then we have to consider one of two other options listed.

On the other hand, decision on what SDK to use depends on which version of VS has been used to develop source code of a product in 32bit world. If 32bit code is based on VC6, there should not be any problems with buildin the same code with the PSDK. The Platform SDK compiler is based on the compiler from VS2005 so you should not hit many issues. Most of them I am going to cover in my next posts to this blog. If your current 32bit code base is based on VC2002/2003 headers/libraries, then you most likely have to build your code with the 64bit 7.1 SDK. This is a pretty good SDK and most of customers hit no problems of porting their code. However, as I mentioned this before, I personally recommend start using Visual Studio 2005 ASAP. We have added much value to the new toolset, compiler and libraries. Compiler teams have made many improvements related to performance and security of the compiled code. Libs team did extensive security review of source code, fixed many, many bugs and have introduce really cool features to CRT, SCL and MFC. VS2005 is great release and I am very excited about all great work VC team has done for this release. However I guess this is a topic of another discussion, which I will open some other time.