¿Cuál es la diferencia entre varios shells de comandos en VS2010?

¿Cuál es la diferencia entre el "símbolo del sistema de visual studio x64 win64", "símbolo del sistema de herramientas cruzadas de visual studio x64" y "símbolo del sistema de visual studio" que aparece en el menú de Visual Studio 2010 en el botón Inicio?

Para obtener la respuesta más útil, seamos claros sobre mi nivel de ignorancia: estoy más cerca de ser un novato que de un gurú en Microsoft o los IDE en general. Experto en Linux desde hace mucho tiempo, edición de fuentes en un editor de texto sin formato, Makefiles hechos a mano, etc.

Estoy seguro de que las diferencias son simples, quizás "obvias" para cualquier persona con una experiencia modesta en VS2010.

preguntado el 27 de julio de 12 a las 22:07

probablemente solo las variables de entorno, pero no sé cuáles; intente ejecutar 'env' y compare los resultados -

@Frobzig: en un shell de comandos de Windows, el comando que desea es setno, env. -

2 Respuestas

Los diferentes archivos por lotes se ajustan PATH, LIB, INCLUDE y LIBPATH para que puedas correr cl.exe y otras herramientas de construcción fácilmente.

Respondido 27 Jul 12, 22:07

Después de ejecutar la versión x64 en una máquina de 64 bits, puede crear archivos de objetos de 64 bits y vincularlos con bibliotecas de 64 bits sin especificar rutas absolutas porque todas están en las variables de entorno. Las herramientas cruzadas son para construir binarios de 64 bits en una máquina de 32 bits y la última es para compilaciones de 32 bits. - HierroMensan

Esa debería ser la respuesta, no un comentario. - DarenW

Esta respuesta se centra principalmente en VS2013. documentación de microsoft http://msdn.microsoft.com/en-us/library/ms229859%28v=vs.110%29.aspx establece lo siguiente:

A partir de Visual Studio 2010, es posible que vea varios símbolos del sistema, según la versión de Visual Studio y los SDK adicionales que haya instalado. Por ejemplo, las versiones de 64 bits de Visual Studio proporcionan símbolos del sistema de 32 y 64 bits. (Las versiones de 32 y 64 bits de la mayoría de las herramientas son idénticas; sin embargo, algunas herramientas realizan cambios específicos para entornos de 32 y 64 bits).

Agrega, más bien inútilmente:

Consulte la documentación de las herramientas individuales para determinar qué versión del símbolo del sistema debe usar.

La página http://msdn.microsoft.com/en-us/library/jj153218.aspx enumera cinco de estos avisos de comando:

  • Símbolo del sistema para desarrolladores para VS2013
  • Símbolo del sistema de herramientas cruzadas VS2013 ARM
  • Símbolo del sistema de herramientas cruzadas VS2013 x64
  • Símbolo del sistema de herramientas nativas de VS2013 x64
  • Símbolo del sistema de herramientas nativas de VS2013 x86

En mi máquina, solo están presentes el primero, el tercero y el quinto, y se inician, respectivamente:

%comspec% /k ""C:\Archivos de programa (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat"" %comspec% /k ""C:\Archivos de programa (x86)\Microsoft Visual Studio 12.0 \VC\vcvarsall.bat"" x86_amd64 %comspec% /k ""C:\Archivos de programa (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"" x86

Para comprobar las variables de entorno, ejecutando el set el comando para los shells first y "x86 Native" da idéntico resultados en mi máquina. Y la respuesta de mmohamad tp Diferencia entre VsDevCmd.bat y vcvarsall.bat en VS2012 está de acuerdo con esto.

Pero "x64 Cross" es diferente: la diferencia es (excluyendo Path y LIBPATH para ser breve):

 + CommandPromptType=Cross
 + FrameworkDIR64=C:\WINDOWS\Microsoft.NET\Framework64
 + FrameworkVersion64=v4.0.30319
 + Platform=x64
 - LIB=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIB;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86;
 + LIB=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIB\amd64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64;

contestado el 23 de mayo de 17 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.