Reputation: 1652
I have small C/C++ project in Visual Studio 2012 RC
This applications parses the argv and then calling another .exe file with ShellExecute
My application works perfect on Windows7 but on Windows XP x86 trhows Is not a valid Win32 application error.
I have compiled it with Mutli-thread(/MT) and Win32 Platform
This is my #includes
#include <string>
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <cstdio>
#include <vector>
#include <windowsx.h>
#include <shlobj.h>
#include <stdio.h>
#include <tchar.h>
#include <direct.h>
Thanks
Upvotes: 43
Views: 109301
Reputation: 93410
I had the same issue on Windows XP when running an application built with a static version of Qt 5.7.0 (MSVC 2013).
Adding the following line to the project's .pro file solved it:
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
Upvotes: 1
Reputation: 11
For me, this helped: 1. Configuration properties/General/Platform Toolset = Windows XP (V110_xp) 2. C/C++ Preprocessor definitions, add "WIN32" 3. Linker/System/Minimum required version = 5.01
Upvotes: 1
Reputation: 4695
I got this problem while launching a VS2013 32-bit console application in powershell, launching it in cmd did not issue this problem.
Upvotes: -1
Reputation: 15055
It's Feb 2013, and I can now target XP in VS2012 by setting:
Project Properties -> General -> Platform Toolset to:
Visual Studio 2012 - Windows XP (v110_xp)
You will have to redistribute the msvcp110.dll libraries et al with your application, which are found here: "<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"
Update Aug 2015 with Visual Studio 2015
There seems to be quite a selection now. I was able to compile application in VS2015 using Visual Studio 2015 - Windows XP (v140_xp) setting. To make it actually run on Win XP I had to deploy (copy alongside application) msvcr100.dll for Release build and msvcr110.dll and msvcr100d.dll for Debug build (note there is a difference in numbers 100 and 110, also debug lib msvcr100d.dll may not be redistributable)
Upvotes: 50
Reputation: 21
I believe this error can also be thrown if your project is targeting a framework version that is not installed on the server you are deploying to.
Upvotes: -1
Reputation: 73
While seleted answer was right time ago, and then noelicus gave correct update regarding v110_xp platform toolset, there is still one more issue that could produse this behaviour.
A note about issue was already posted by mahesh in his comment, and I would like to highlight this as I have spend couple of days struggling and then find it by myself.
So, if you have a blank in "Configuration Properties -> Linker -> System -> Subsystem" you will still get the "not valid Win32 app" error on XP and Win2003 while on Win7 it works without this annoying error. The error gone as soon as I've put subsystem:console.
Upvotes: 6
Reputation: 15175
VS 2012 applications cannot be run under Windows XP.
See this VC++ blog on why and how to make it work.
It seems to be supported/possible from Feb 2013. See noelicus answer below on how to.
Upvotes: 43
Reputation: 18613
There are at least two solutions:
Upvotes: 4