web-dev-qa-db-fra.com

Comment cibler Windows XP dans Microsoft Visual Studio C++

J'utilise Microsoft Visual Studio 2015 sur Windows 8.1. Je veux compiler un programme ciblant Windows XP. J'ai consulté Google et d'autres questions similaires, mais aucune n'a été utile. Dans les paramètres de la solution, le jeu d’outils de la plate-forme cible est défini sur Windows XP, mais il n’existe aucune option pour Windows XP dans la version de la plate-forme cible . J'ai lu https: // msdn.Microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx (Utilisation des en-têtes de Windows) et a ajouté les lignes suivantes à mon programme:

#define WINVER _WIN32_WINNT_WINXP
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#define NTDDI_VERSION NTDDI_WINXP

Mais ça ne marche toujours pas. Il dit qu'il ne peut pas trouver "MSVCP140.dll". Après avoir obtenu cette DLL, il commence à se plaindre de ne pas trouver "VC140.dll". Après cela se trouve "ucrtbased.dll", puis enfin "api-ms-win-core-string-11-1-0.dll", que je n'ai même pas dans mon ordinateur Windows 8.1. Le programme peut fonctionner sous Windows 8.1, mais pas sous Windows XP . Que puis-je faire pour que le programme s'exécute sous Windows XP?

8
Tyler Tian

Pour créer un EXE compatible Windows XP compatible avec VS 2015 (ou VS 2012/VS 2013), vous devez utiliser le jeu d'outils Platform v140_xp plutôt que le jeu d'outils par la plateforme v140 par défaut.

Voir les propriétés de votre projet, la page générale:

 Property Page

En effet, Platform Toolset par défaut utilise le Kit de développement logiciel (SDK) Windows 8.1 (ou vous pouvez opter pour le Kit de développement logiciel (SDK) de Windows 10) et ne prend en charge que la création d'applications pour Windows Vista ou version ultérieure. Lorsque vous sélectionnez le v140_xp Platform Toolset, vous utilisez une version du SDK Windows 7.1 qui était la dernière version à prendre en charge le ciblage de Windows XP ou Windows Server 2003.

Notez que Visual Studio peut cibler Windows XP Service Pack 3 ou Windows Server 2003 Service Pack 2. C/C++ Runtime n'est pas compatible avec les anciennes versions de Windows.

Si vous utilisez DirectX dans votre application, cela a de profondes implications car beaucoup de choses ont changé entre le SDK Windows 7.1 et le SDK Windows 8. Voir cet article pour plus de détails.

Avec VS 2015, vous devez également sélectionner la prise en charge de Windows XP dans les options d'installation personnalisée ou via Programmes et fonctionnalités/Microsoft Visual Studio 2015/Modifier .../Modifier:

 Modify

31
Chuck Walbourn

Il semble que le programme fonctionne correctement sur votre ordinateur de développement (Windows 8.1 + MSVS 2015), mais ne fonctionne pas sur un ordinateur XP. 

SOLUTION: vous devez inclure le runtime MSVC avec votre fichier .exe. 

Regardez ici: Déploiement d'applications de bureau natif (Visual C++)

et ici: Visual C++ redistribuable pour Visual Studio 2015 .

0
paulsm4