8

Edit note: After a seemingly enourmous amount of bad feedback MS got from their customers regarding the drop-XP-stunt, they have announced that a patch will be released that'll allow to build executables for XP. So the base for this Q is no lonher really there, but I think it collects some very interesting infos.


As established here: What is special about the executables compiled with Visual Studio 11 which results in that the executables cannot be executed on Windows XP?

and in this Connect bug/issue: https://connect.microsoft.com/VisualStudio/feedback/details/690617, Visual Studio 11 (planned release 2012) is planned to no longer support Windows XP.

That means you cannot create a native C++ executable that can be executed on Windows XP. (One reason being that the new CRT will use Windows API calls that are only available on Windows Vista and higher.)

In one answer, Anders writes:

They seem to drop support for older systems in every new release of VS (NT4,2000,XP) ...

What interests me now is whether this move by Microsoft to drop Windows XP support completely from VS11 C++ can actually be compared to prior releases.

What I mean is, when was support for which OS (NT3.5 / NT4 / 2000sp6 // Win95 / Win98 / ...) completely dropped from Visual C++. (and "what part" of Visual C++ -- the compiler, the CRT, the Windows SDK?)

For example, I think I know that VC6 is the last version of VS that can be used to create executables that run on Windows NT4. I also seem to remember that the dropped support for Win2k had more to do with the Windows SDK you are using than with the actual compiler or CRT, but I'm not sure.

Is there a good resource that shows which MS compilers in which setting can produce compatible code for which OS versions? Is the timing of VS11 (year 2012) no longer supporting a OS that is widely installed (but no longer sold) comparable to prior releases?


One point of interest is that we're in the middle of the shift from C++03 to C++11, and if you're stuck with Windows XP and VC10, the you're stuck with the limited (and partially non-standard) C++11 support it has to offer.

Community
  • 1
  • 1
Martin Ba
  • 37,187
  • 33
  • 183
  • 337
  • 4
    I remember being pretty angry when VS 4 came out because if my clients didn't move up to W95 they couldn't run the apps I wrote with it. I got over it though :-) – Kate Gregory Dec 19 '11 at 16:55

3 Answers3

8

I think it makes sense to compare VS release dates against when the Windows versions became unsupported, rather than when the Windows versions were released.

Once an OS reaches the end of extended support it stops getting security updates and anyone still running it can be considered insane and ignored (outside of very special cases). Before then, it seems legitimate (albeit annoying at times) for people to still use old OS versions and expect software to support them (although vendors, both third-parties and Microsoft themselves, can choose not to, of course).

From Wikipedia, this is when each version of Windows became (or will become) unsupported by Microsoft:

  • Jan 2020: Windows 7
  • Apr 2017: Windows Vista
  • Apr 2014: Windows XP
  • Jul 2010: Windows 2000
  • Jul 2006: Windows ME
  • Jul 2006: Windows 98
  • Jun 2004: Windows NT 4
  • Dec 2001: Windows 95
  • Dec 2001: Windows NT 3

Tying that to the details in the existing answer:

  • VS in 2012 dropped Windows XP despite it being supported until 2014.
  • VS in 2010 dropped Windows 2000 which expired soon after.
  • VS in 2007 dropped Win98/ME both of which already expired.
  • VS in 2005 dropped Win95 and NT4 both of which which had already expired.

So it looks like VS2012 is the first version that will drop support for an OS which itself will still supported for at least another year. Assuming all these dates are correct (I haven't double-checked them; did this mostly for my own curiousity).

Yuhong Bao
  • 3,891
  • 1
  • 19
  • 20
Leo Davidson
  • 6,093
  • 1
  • 27
  • 29
  • 1
    [This MS page](http://support.microsoft.com/gp/lifeselectwin) lists the links to all Windows support dates (and some). For the ones I checked, [wikipedia](http://en.wikipedia.org/wiki/Windows#History) and your list seems to be correct. – Martin Ba Apr 05 '12 at 05:32
  • 2005 also dropped NT4 - see http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/2435c3ab-f732-467e-8224-5f4e3f12c10b/ – Ted. Apr 07 '12 at 01:23
  • Also a good summary in a comment to a VC++ blog post: http://blogs.msdn.com/b/vcblog/archive/2012/04/18/10295093.aspx#10295293 – Martin Ba Apr 30 '12 at 05:02
4

Assuming you are only talking about the minimum supported 32bit desktop editions of Windows, and customer support from Microsoft.

  • VC11 (y 2012): Windows Vista (y 2007)
  • VC10 (y2010): Windows XP SP3 (y 2008/2001)
  • Windows SDK 6.1: Windows XP (y 2001)
  • VS2008 (y 2007): Windows 2000 SP4 (y 2003). The latest security update dropped Windows 2000 support.
  • Windows SDK Update for Windows Vista: Windows 2000 (y 2000)
  • VS2005 (y 2005): Windows 98 (y 1998), Windows 2000 Service Pack 3, Windows XP, Windows NT 3 (y 1993). SP1 dropped 9x support. The latest security update dropped Windows 2000 support.
  • VC6 (y 1998): Windows 95 (y 1995), Windows NT ??
    • Compiler can be upgraded via Visual C++ Toolkit 2003
    • Platform SDK can be upgraded, up to the Feb 2003 version of Windows 2003 SDK.

Support for 64bit OS varies but a good indicator is whether the target OS is still supported at the time of release. The first stable version of SDK with 64bit support is VC2005.

Hacks (may cause more problem down the road)

  • Patch the executable
    • Visual C++ compiler: There is a /SUBSYSTEM and a /OSVERSION switch whose default value change over time but you can easily modify the value via the compiler switch or using a hex editor if you know the PE format.
    • Modify the executable to remove new API calls if you are confident that the code that calls the new API won't be touched in your program.
  • CRT/MFC/ATL
Community
  • 1
  • 1
Sheng Jiang 蒋晟
  • 15,125
  • 2
  • 28
  • 46
2

Microsoft have announced that support for building C++ applications targeted at Windows XP will be included in Visual Studio 2012, so that does make 2012 comparable to previous release of Visual Studio in this respect.

http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx