Ok, j'utilise donc Visual Studio 2012 sous Windows 7 x64 pour la programmation et la compilation. Mon application fonctionne correctement, mais lorsque j'essaie de l'exécuter à partir d'une machine virtuelle Windows XP SP3, le message "xxxx.exe n'est pas une application win32 valide" immédiatement.
L'application est en cours de compilation avec un lien statique, c'est-à-dire avec/MT. J'ai défini _WIN32_WINNT sur 0x0501 dans targetver.exe; le gestionnaire de configuration est défini sur Win32 et la machine cible dans les options avancées de l'éditeur de liens est définie sur MACHINEX86.
Mon targetver.h ressemble à ceci:
#include <winsdkver.h>
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#define NTDDI_VERSION 0x0501
#include <SDKDDKVer.h>
J'ai aussi essayé de compiler avec/MD et d'installer .NET Framework, cela ne m'a pas aidé non plus.
Je ne suis pas au courant et je pourrais vraiment avoir besoin d'aide car je dois le faire fonctionner sous Windows XP. Merci d'avance.
Republier de commentaire, et notez que cette réponse est applicable à VC++ 2012:
VC++ 2012 RTM ne prend pas en charge pas sous WinXP - cette assistance sera fournie plus tard cette année dans la mise à jour VS2012 1.
En attendant, vous pouvez installer le ciblage CTP de WinXP avec VC++ 2012 , mais vous devrez relier le CRT de manière statique pour pouvoir le déployer. Voir cet article de blog pour plus d'informations.
EDIT: Visual Studio 2012 Update 1 est maintenant disponible et ajoute un support officiel pour l'exécution des applications créées avec VC++ 2012 sous Windows XP, ainsi que la possibilité de lier le CRT de manière dynamique.
Deux choses devraient être faites:
Propriétés de configuration> page Général, remplacez Platform Toolset par: Visual Studio 2012 - Windows XP (v110_xp);
Lieur> système. Remplacez le sous-système par: Console/Windows.
Détails explications ici: http://software.intel.com/en-us/articles/linking-applications-using-visual-studio-2012-to-run-windows-xp
Peut-être être en retard avec la solution, ou peut-être pas la solution attendue, mais lorsque vous générez le fichier .exe, la version 32 bits sera dans le dossier du projet bin\x86\Release