2015-12-28 1 views

Répondre

3

Configuring C++ 11 Programs for Windows XP

Le jeu d'outils de plate-forme Windows XP qui est inclus dans Visual Studio est une version du SDK Windows 7 qui a été inclus dans Visual Studio 2010, mais il utilise le courant compilateur C++. Il configure également les propriétés de projet aux valeurs par défaut appropriées, par exemple, la spécification d'un éditeur de liens compatible pour le ciblage de niveau inférieur. Seules les applications de bureau Windows créées à l'aide de la plate-forme Windows XP s'exécutent sur Windows XP et Windows Server 2003, mais elles peuvent également fonctionner sur des systèmes d'exploitation plus récents, par exemple Windows Vista, Windows 7, Windows Server 2008, Windows 8 ou Windows Server 2012.

pour cibler Windows XP

  • Dans l'Explorateur de solutions, ouvrez le menu contextuel pour votre projet, puis choisissez Propriétés.
  • Dans la boîte de dialogue Pages de propriétés du projet, sous Propriétés de configuration, Général, définissez la propriété Jeu d'outils de la plate-forme sur l'ensemble d'outils Windows XP souhaité. Par exemple, choisissez Visual Studio 2012 - Windows XP (v110_xp) pour créer du code binaire compatible avec les bibliothèques Redistribuable Microsoft Visual C++ 2012.
+0

j'ai demandé visual studio 2015 non pas pour Visual Studio 2012. est le réglage reste identique pour VS2015 trop ? –

+0

La page que j'ai liée est clairement étiquetée 'Visual Studio 2015'. Veuillez le lire entièrement. – dxiv

+1

Oui. Je suis allé avec le cap. Merci pour l'info :) –

2

Comme mentionné par dxiv Windows XP peut être ciblé du studio visuel en utilisant le jeu d'outils de la plate-forme correcte (Visual Studio 2015 - Windows XP (v140_xp)).

Ce n'est pas suffisant dans tous les cas. Comme le compilateur vs a été étendu par la gestion du stockage local du thread de propper (TLS), un changement supplémentaire est nécessaire. Le nouveau TLS n'est pas correctement pris en charge par Windows XP et donc les objets statiques dans dll ne seront pas initialisés. Si vous souhaitez éviter ce problème, utilisez l'indicateur de compilation supplémentaire /Zc:threadSafeInit- pour désactiver cette fonctionnalité problématique.

Si vous souhaitez utiliser boost, vous devez le construire vous-même. Pour le rendre compatible avec Windows XP les options suivantes doivent être ajoutées:

1) ces commandes, avant la construction avec b2 (bjam)

CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 
SET "INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%" 
SET "PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%" 
SET "LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%" 

2) utiliser ces options supplémentaires pour b2

toolset=msvc-14.0 
address-model=32 
define=BOOST_USE_WINAPI_VERSION=0x0501 
define=_USING_V110_SDK71_ 
linkflags=/SUBSYSTEM:CONSOLE,5.01 
cxxflags="/Zc:threadSafeInit- " 

note:

  • la définition est _USING_V110_SDK71_ pas _USING_V140_SDK71_.
  • l'espace cxxflags="/Zc:threadSafeInit- " est intentionnel du à un bug dans b2 qui supprimerait la fuite « - »