8

Nota de edición: Después de una cantidad aparentemente enorme de comentarios negativos que MS recibió de sus clientes con respecto a la versión XP-stunt, se lanzaron un parche que permitirá construir archivos ejecutables para XP. Entonces, la base para esta Q ya no existe, pero creo que recopila algunas informaciones muy interesantes.¿El soporte eliminado para Windows XP en VS11 es comparable a versiones anteriores de Visual Studio?


Como se estableció aquí: What is special about the executables compiled with Visual Studio 11 which results in that the executables cannot be executed on Windows XP?

y en este cuate bug/issue: https://connect.microsoft.com/VisualStudio/feedback/details/690617, Visual Studio 11 (lanzamiento previsto 2012) se planea ya no es compatible con Windows XP.

Eso significa no se puede crear un ejecutable nativo de C++ que se puede ejecutar en Windows XP. (. Una de las razones es que la nueva CRT utilizará llamadas a la API de Windows que sólo están disponibles en Windows Vista y superiores)

En one answer, Anders escribe:

Ellos parecen caer el apoyo a los sistemas más antiguos en cada nueva versión de VS (NT4,2000, XP) ...

Lo que me interesa ahora es si este movimiento de Microsoft para soltar el soporte de Windows XP completamente del VS11 C++ puede realidad ser comparado con versiones anteriores.

Lo que quiero decir es cuándo fue el soporte para el que OS (NT3.5/NT4/2000sp6 // Win95/Win98/...) cayó por completo de Visual C++. (y "qué parte" de Visual C++ - el compilador, el CRT, el SDK de Windows?)

Por ejemplo, creo que sé que VC6 es la última versión de VS que se puede usar para crear ejecutables que se ejecutan en Windows NT4. También parece recordar que el soporte eliminado para Win2k tenía más que ver con el SDK de Windows que está utilizando que con el compilador o CRT real, pero no estoy seguro.

¿Existe un buen recurso que muestre qué compiladores de MS en qué configuración pueden producir código compatible para qué versiones de SO? ¿El momento de VS11 (año 2012) ya no es compatible con un sistema operativo que está ampliamente instalado (pero que ya no se vende) comparable a versiones anteriores?


Un punto de interés es que estamos en el medio de la transición de C++ 03 ++ a C 11, y si le pegan con Windows XP y VC10, el que está atascado con el soporte C++ 11 limitado (y parcialmente no estándar) que tiene para ofrecer.

+4

Recuerdo que estaba muy enojado cuando VS 4 salió porque si mis clientes no se movieron hasta W95 no podían ejecutar las aplicaciones que escribí con ella. Sin embargo, lo superé :-) –

Respuesta

8

creo que tiene sentido comparar VS fechas de lanzamiento en contra cuando las versiones de Windows se convirtieron sin apoyo, en lugar de cuando las versiones de Windows fueron puestos en libertad.

Una vez que el sistema operativo llega al final del soporte extendido, deja de recibir actualizaciones de seguridad y cualquiera que todavía lo ejecute se puede considerar insano e ignorado (fuera de casos muy especiales). Antes de eso, parece legítimo (aunque molesto a veces) que las personas sigan usando viejas versiones del sistema operativo y esperan que el software las respalde (aunque los proveedores, tanto de terceros como de Microsoft, pueden optar por no hacerlo, por supuesto).

De Wikipedia, esto es cuando cada versión de Windows se convirtió en (o llegará a ser) no soportada por Microsoft:

  • Ene 2020: Windows 7
  • Abr 2017 Windows Vista
  • Abr 2014: Ventanas XP
  • Jul 2010: Windows 2000
  • jul 2006: Windows ME
  • jul 2006: Windows 98
  • Jun 2004: Windows NT 4
  • Dic 2001: Windows 95
  • Dic 2001: Windows NT 3

Atar que a los detalles en la respuesta existente:

  • VS en 2012 cayó Windows XP a pesar de ser compatible hasta 2014.
  • VS en 2010 cayó Windows 2000 que expiró poco después.
  • VS en 2007 eliminó Win98/ME, que ya expiraron.
  • VS en 2005 dejó Win95 y NT4 que ya habían expirado.

Parece que VS2012 es la primera versión que dejará de ser compatible con un sistema operativo que por sí solo seguirá siendo compatible durante al menos otro año. Suponiendo que todas estas fechas son correctas (no las he comprobado dos veces, lo hice principalmente por mi propia curiosidad).

+1

[Esta página de MS] (http://support.microsoft.com/gp/lifeselectwin) enumera los enlaces a todas las fechas de soporte de Windows (y algunas). Para los que revisé, [wikipedia] (http://en.wikipedia.org/wiki/Windows#History) y su lista parece ser correcta. –

+0

2005 también cayó NT4 - vea http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/2435c3ab-f732-467e-8224-5f4e3f12c10b/ –

+0

También un buen resumen en un comentario a un VC++ publicación de blog: http://blogs.msdn.com/b/vcblog/archive/2012/04/18/10295093.aspx#10295293 –

4

Suponiendo que solo está hablando de las ediciones de escritorio de 32 bits soportadas de Windows como mínimo, y atención al cliente de Microsoft.

  • VC11 (y 2012): Windows Vista (y 2007)
  • VC10 (y2010): Windows XP SP3 (y 2008/2001)
  • SDK de Windows 6.1: Windows XP (y 2001)
  • VS2008 (y 2007): Windows 2000 SP4 (y 2003). La última actualización de seguridad dejó de ser compatible con Windows 2000.
  • Actualización de Windows SDK para Windows Vista: Windows 2000 (y 2000)
  • VS2005 (y 2005): Windows 98 (y 1998), Windows 2000 Service Pack 3, Windows XP, Windows NT 3 (y 1993). SP1 cayó soporte 9x. La última actualización de seguridad dejó de ser compatible con Windows 2000.
  • VC6 (y 1998): Windows 95 (y 1995), Windows NT ??
    • compilador puede actualizar a través de Visual C++ Toolkit 2003
    • SDK de la plataforma se pueden actualizar, hasta la versión del SDK de Windows 2003 Feb 2003.

Soporte para SO de 64 bits varía, pero es un buen indicador de si el sistema operativo de destino aún se puede utilizar en el momento de la liberación. La primera versión estable de SDK con soporte de 64 bits es VC2005.

Hacks (puede causar más problemas en el camino)

  • parchear el ejecutable
    • compilador Visual C++: Hay un/subsistema y un interruptor/OSVERSION cuyo valor predeterminado de cambio de valor con el tiempo pero se puede modifica fácilmente el valor a través del interruptor del compilador o usando un editor hexadecimal si conoces el formato PE.
    • Modify the executable para eliminar nuevas llamadas a API si está seguro de que el código que llama a la nueva API no se tocará en su programa.
  • CRT/MFC/ATL
    • Make a private build usando different build options, o recompilar versiones antiguas si tiene el código fuente y no se puede quitar nuevas llamadas a la API de una nueva versión.
    • Haga que el vinculador se vincule con su propia implementación de las funciones del marco. Esto es used to reduce the size of MFC apps, pero esto también puede soltar dependencias como GDI + durante el proceso.
2

Microsoft ha anunciado que la compatibilidad para la construcción de aplicaciones C++ para Windows XP se incluirá en Visual Studio 2012, por lo que hace que 2012 sea comparable al lanzamiento anterior de Visual Studio a este respecto.

http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx

+0

gracias por esta actualización. Supongo que tendré que actualizar la pregunta en consecuencia –

Cuestiones relacionadas