risorse | vs2013-xp
La configurazione predefinita di Visual Studio 2013 Express for Windows Desktop genera binari che non sono compatibili con Windows XP. La ragione è che a partire da Visual Studio 2012 l'SDK di riferimento è quello di Windows 8, che non è conforme all'API di Windows XP:[2]
…the Windows 8 SDK headers and libs may have removed deprecated Windows XP APIs with no mitigation.
L'esecuzione di un programma compilato con l'SDK 8 su Windows XP produce il messaggio d'errore:
«program.exe» is not a valid Win32 application.
Il Visual Studio 2012 Update 1 e il Visual Studio 2013 contengono, assieme al nuovo SDK, anche quello di Windows 7. Essendo quest'ultimo compatibile con Windows XP, è di nuovo possibile creare applicativi funzionanti anche su quel sistema operativo.
Le istruzioni per attivare l'SDK di Windows 7 di Visual Studio 2013 Express for Windows Desktop dall'IDE sono riportate in [2]; per attivarlo dalla linea di comando, la procedura è la seguente:
definire la macro _USING_V110_SDK71_ per il compilatore C++ (cl.exe) e quello delle risorse (rc.exe);
chi fa uso di makefile gestisce questo tipo di parametrizzazioni con le variabili d'ambiente:
Alternativamente, si può agire direttamente sul comando di invocazione dei due compilatori.
Nota: la macro _USING_V110_SDK71_ va definita sia per i file C++ che per quelli delle risorse (*.rc).
Nota: gli asterischi in LNKFLAGS stanno ad indicare che l'impostazione del sotto-sistema corrisponde a quella originale del progetto, ciò che conta è la specifica addizionale della versione, che è diversa per le due piattaforme x86/x64.
I binari preparati con l'SDK vecchio dipendono comunque dal nuovo run-time, non ce n'è uno dedicato[2]:
The redist (runtime, e.g. msvcr110.dll) is the same for all platforms, no separate redist for XP.
La citazione si riferisce a Visual Studio 2012; per il Visual Studio 2013, il runtime C è msvcr120.dll, msvcp120.dll quello del C++.
C'è qualche controindicazione a compilare binari in questa modalità? Sì, se si ha l'intenzione di farli girare su sistemi operativi più moderni[2]:
…if your application compiles and runs we cannot guarantee it will continue to do so in future releases and updates of Visual Studio.
Pagina modificata il 15/09/2014