web-dev-qa-db-fra.com

xxxxxx.exe n'est pas une application Win32 valide

J'ai un petit projet C/C++ dans Visual Studio 2012 RC

Cette application analyse le fichier argv puis appelle un autre fichier .exe avec ShellExecute

Mon application fonctionne parfaitement sous Windows7, mais sous Windows XP x86 trhows N’est pas une erreur d’application Win32 valide.

Je l'ai compilé avec Mutli-thread (/ MT) et la plate-forme Win32

Ceci est mon # comprend

#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>

Merci

38
user525717

Les applications VS 2012 ne peuvent pas être exécutées sous Windows XP.

Voir ceci blog VC++ sur pourquoi et comment le faire fonctionner.

Il semble être supporté/possible à partir de février 2013. Voir réponse noelicus ci-dessous pour savoir comment.

44
RedX

Nous sommes en février 2013 et je peux maintenant cibler XP dans VS2012 en définissant:

Propriétés du projet -> Général -> Ensemble d'outils de la plate-forme à:

Visual Studio 2012 - Windows XP (v110_xp)

Vous devrez redistribuer les bibliothèques msvcp110.dll et autres avec votre application, qui se trouvent ici: "<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


Mise à jour août 2015 avec Visual Studio 2015

Il semble y avoir beaucoup de choix maintenant. J'ai pu compiler une application dans VS2015 en utilisant le paramètre Visual Studio 2015 - Windows XP (v140_xp) . effectivement exécuté sur Win XP je devais déployer (copie à côté de l'application) msvcr100.dll pour la version Release et msvcr110.dll = et msvcr100d.dll pour la construction de débogage (notez qu'il existe une différence entre les nombres 100 et 110, et mettez également debug à lib msvcr100d.dll peut ne pas être redistribuable) - Targeting Windows XP with Visual Studio 2015

50
noelicus

Alors que seleted répondait au bon moment, puis que noelicus a correctement mis à jour le jeu d’outils de la plate-forme v110_xp, il reste encore un problème qui pourrait provoquer ce problème.

Mahesh a déjà posté une note sur le problème dans son commentaire, et je voudrais le souligner car j'ai passé quelques jours à me débattre, puis à le trouver par moi-même.

Donc, si vous avez un blanc dans "Propriétés de configuration -> lieur -> système -> sous-système", vous obtiendrez toujours l'erreur "application Win32 non valide" sur XP et Win2003 sur Win7). fonctionne sans cette erreur gênante.L'erreur a disparu dès que j'ai mis le sous-système: console.

6
Andrey Sorich

Il y a au moins deux solutions:

  1. Vous devez installer Visual Studio 2010, puis à partir de Visual Studio 2010, Affichage -> Explorateur de solutions -> Cliquez à droite sur votre projet -> Choisissez Propriétés dans le menu contextuel. La fenêtre "nom de votre projet" s'affiche. Pages de propriétés -> Configuration Propriétés -> Général -> Jeu d'outils Plate-forme, choisissez "Visual Studio 2010 (v100)".
  2. Vous avez besoin du Visual Studio 2012 Update 1 décrit dans Windows XP Ciblage avec C++ dans Visual Studio 2012
5
Alessandro Jacopson

Pour moi, cela m'a aidé: 1. Propriétés de configuration/Général/Outils de la plate-forme = Windows XP (V110_xp) 2. Définitions du préprocesseur C/C++, ajouter "WIN32" 3. Éditeur de liens/Système/Minimum requis version = 5.01

1
Matsk

J'ai eu le même problème sur Windows XP lors de l'exécution d'une application créée avec une version statique de Qt 5.7. (MSVC 2013).

L'ajout de la ligne suivante au fichier . Pro du projet l'a résolu:

QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
1
karlphillip