The setting that needed to be changed was Project Properties -> Configuration Properties -> Linker -> System -> SubSystem
This needs to be set to CONSOLE or WINDOWS for the appropriate project type, but is not set by default for an "empty project", even if console vs GUI is set elsewhere and it appears to work (e.g. WinMain is the entry point, console does not appear, etc). Minimum Required Version also needs to be 5.01, but judging by the command line help on link.exe, I don't think this does anything unless subsystem is set.
Things to check:
- Visual Studio 2012 is Update 1 or higher
- SDK 7.1 is installed and 7.1A exists
- the "Visual Studio 2012 - Windows XP (v110_xp)" toolkit is used
- the preprocessor definitions contains _USING_V110_SDK71_
- the VC++ Directories contain $(WindowsSdkDir_71A)bin, $(WindowsSdkDir_71A)include and $(WindowsSdkDir_71A)lib
- linker subsystem is console or windows, with minimum required version 5.01