visual targeting studio net framework developer cambiar c++ visual-studio dll visual-studio-2012 visual-c++-runtime

c++ - targeting - ¿Utiliza Visual Studio 2012 y compila con un conjunto de herramientas de plataforma más antiguo?



net framework sdk (4)

El problema

Estoy usando Visual Studio 2012 para desarrollar DLL C ++. En algunas máquinas, estas DLL no se pueden cargar porque falta el conjunto de herramientas de la plataforma, que está configurado como "v110".

He intentado instalar runtimes antiguos de c ++. No se instalaron porque "una versión más nueva ya está instalada". También instalé el SDK de Windows actual, pero todavía no hay otros elementos para elegir que v110.

Pregunta

¿Cómo puedo compilar mi DLL de C ++ con una versión anterior del tiempo de ejecución de C ++ para que se ejecute en máquinas que no sean desarrolladores?


Me gustaría compartir algo de información, que encontré y descubrí cómo usarlos para mi propósito.

Aparentemente es una buena opción para usar enlaces estáticos. No siempre funcionó para mí, pero para un proyecto mío más pequeño, funciona bastante bien. Y el resultado es una DLL sin dependencias que no sean kernel32.dll y similares.

Simplemente use /MT para la configuración de lanzamiento y /MTd para la depuración y estará bien.

El problema aquí es que un desarrollador como yo obtiene la versión actual de Visual Studio, poco después de su lanzamiento, pero no se puede esperar que los usuarios comunes tengan instalados tiempos de ejecución que tienen solo unas pocas semanas. Y la instalación de diferentes versiones de Visual Studio solo para usar el viejo tiempo de ejecución definitivamente no es lo que quieres.


bueno, depende de lo que intentas construir. Algunas cosas son compatibles con la instalación de Windows SDK 7.1. vea esta publicación, la misma pregunta , pero si su proyecto depende de MFC, desafortunadamente parece que no es posible en absoluto, principalmente porque nada más que VS2010 está implementando las bibliotecas de MFC.


Una pista para el archivo de internet. (No puedo comentar las declaraciones anteriores, no sé por qué)

Para usar el conjunto de herramientas de la plataforma v90 (= Visual Studio 2008) en un Visual Studio más reciente (I testet 2013 y 2015), necesita instalar Visual Studio 2008 y, además, Visual Studio 2010, porque las definiciones del conjunto de herramientas de la plataforma vs90 en la carpeta MS Build parte de Visual Studio 2010.

C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/Platforms/x64/PlatformToolsets para v90 y v100

C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0

para V110 V120 y V140

representando las versiones de Visual Studio: v90 = 2008, v100 = 2010, V110 = 2012, V120 = 2013, V140 = 2015.

Después de la instalación vob VS2010, las nuevas versiones de Visual Studio 2013 y 2015 podrían usar los juegos de herramientas de la plataforma vs90 y vs100. (Esto funciona de forma inmediata sin una nueva instalación de Visual Studio 2013/2015). Supongo que Visual Studio 2012 lo está haciendo de la misma manera que VS2013 y VS2015.


De acuerdo con esta página en MSDN , necesita tener la versión correspondiente de Visual Studio (2008 o 2010) o el SDK de Windows correspondiente para el menú desplegable "Platform Toolset" para listar esas versiones:

Para cambiar el conjunto de herramientas de la plataforma objetivo, debe tener instalada la versión asociada de Visual Studio o Windows Platform SDK.

También parece estar un poco confundido entre "Platform Toolset", que controla qué compilador / enlazador / etc. se usa para compilar su aplicación, y "Visual C ++ Redistributable", que se necesita para ejecutar su aplicación. No puede instalar un "Juego de herramientas de plataforma" en la PC de un usuario, ni tampoco tendrá uno disponible instalando un "Visual C ++ Redistributable" en particular en su PC de desarrollo.

Además, hasta donde yo sé, Visual C ++ Redistributable no incluye los tiempos de ejecución de MFC. Están disponibles como un módulo de fusión MSI (MSM) por separado.