VC2012 RTM released – linker minimum required version setting now supports XP

VC2012 RTM has been released, and my xpsupport version 1.10 (post Release Preview version) files available at

https://skydrive.live.com/?cid=1b361bf333e9ab82

are holding up well.  The main changes between Release Preview and RTM are that new calls to Vista only thread pooling functions have been added to the CRT (so I had to wrap them in 1.10), and the way that the ConCRT libraries are initialized had to be changed slightly to carefully set the internal cached OS version back to XP after hacking it temporarily to Vista.   So if you’ve already upgraded to 1.10, no changes are necessary if you just upgraded to RTM, otherwise upgrade your xpsupport version now!

And now some good news: in previous VC2012 betas/candidates, the minimum version you could set in your binary was 6.0 (Vista) which meant you had to use EDITBIN to change the version of your executable to hack it back to 5.1.

Now, The RTM linker supports setting SUBSYSTEM version to 5.1!  In fact you no longer need to fumble around with command line options. In the IDE you can just go to project properites, then linker settings – system, and set minimum required version to 5.01.  And once you do that it conveniently also sets OSVERSION for you to 5.1.

This was probably put in early to prepare for the eventual full support for XP targeting later this fall.  Of course, with this setting (5.1) specified in the linker you still cannot run an app created by VC2012 RTM in XP due to missing ordinals, but it saves a few steps when performing my VC2012 XP targeting instructions at

https://tedwvc.wordpress.com/2012/03/11/how-to-get-visual-c-2012-vc-11-beta-statically-linked-crt-and-mfc-applications-to-run-on-windows-xp/

Now the countdown begins for the eventual release of full XP targeting support by Microsoft, and these wrappers can then be finally put to rest.