Question

By default Visual Studio 2012 does not support Windows XP nor Windows Server 2003. And before Update 1 those OSes weren't supported at all. Now with Update 1, I can use Visual Studio 2012 to create apps that target Windows XP and Windows Server 2003 by choosing to use the vs110_xp toolset. Great.

I wonder what happens when I forget to do that? What does "does not support" mean? Executables just don't run: "... is not a valid Win32 application."

But what will happen when I use such DLLs on XP? I cannot seem to find any information about that. And unfortunately I currently cannot try it out. Anyone found specific issues?

Was it helpful?

Solution

The program simply won't be able to start and fails immediately. The most important change in VS2012 is that it now specifies Windows version 6.0 in the /SUBSYSTEM linker option. Window XP will notice this, it is version 5.02, throw up its hands and fails the EXE start request or DLL load with ERROR_BAD_EXE_FORMAT.

Pretty important change btw, the appcompat shims that Windows turns on for executables that say that they were made to work on old Windows versions are fairly troublesome. The Aero lies are hard to deal with, should you care. The CRT was changed a great deal as well, using many more winapi functions that are only available in 6.0 and up. The Update1 revision limps along when it discovers them missing.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top