51 votos

¿Cómo hacer un .exe completamente estáticamente enlazados con Visual Studio Express 2005?

Mi preferido de C++ es el medio ambiente libre y en gran medida excelente de Microsoft Visual Studio 2005 Express edition. De vez en cuando me han enviado la liberación .exe archivos a otras personas con resultados satisfactorios. Sin embargo, recientemente he realizado el inquietante descubrimiento de que los resultados satisfactorios se basa en más suerte que yo quisiera. Intentar ejecutar uno de estos programas en un viejo (2001 vintage, no escrupulosamente actualizado) XP cuadro no me dio nada pero un desagradable "el Sistema no puede ejecutar x.exe" (o similar) en el mensaje.

Algunas google reveló que con este conjunto de herramientas, especificando la vinculación estática resultados en un simple hello-world.exe de hecho depender de la extra .los archivos dll (msvcm80.dll etc.). Una muy elaborada, la versión de tramar (sistema de archivos de manifiesto a nadie?) entonces no deje que el .exe se ejecute sin exactamente a la derecha .dll versiones. Yo no necesita o no quiere estas cosas, sólo quiero un antiguo autónomo .exe que no hace nada pero el denominador común más bajo Win32 operaciones y se ejecuta en cualquier edad win32 OS.

¿Alguien sabe si es posible hacer lo que quiero hacer con mi juego de herramientas existente ?

Gracias.

57voto

Rob Walker Puntos 25840

Para el tiempo de ejecución C ir a la configuración del proyecto, seleccione C/c ++ y generación de código. Cambio de la 'Biblioteca de tiempo de ejecución' establecer 'multitarea' en lugar de 'multiproceso dll'.

Si utilizas otras bibliotecas puede que necesite contar el vinculador para omitir el CRT vinculado dinámicamente explícitamente.

3voto

Jared Updike Puntos 3946

He tenido este mismo problema de dependencia y también sé que puede incluir el VS 8.0 archivos Dll (versión sólo! no se depurar!---y su programa tiene que ser disparador) en una carpeta con el nombre apropiado, en la carpeta principal con su .exe:

Cómo: Implementar el uso de XCopy (MSDN)

También se nota que las cosas están garantizados a salir mal si usted necesita someterse a C++ y C código de la misma vinculado estáticamente .exe porque usted obtendrá enlazador de conflictos que sólo puede ser resuelto por ignorar la correcta libXXX.lib y, a continuación, vincular de forma dinámica (Dll).

Por último, con un diferente conjunto de herramientas (VC++ 6.0) que las cosas "funcionen", desde Windows 2000 y encima tienen la correcta Dll instalados.

1voto

Jesse Salazar Puntos 317

En cuanto respuesta de Jared, tener Windows 2000 o mejor no necesariamente solucionará el problema a mano. Funciona la respuesta de Rob, sin embargo es posible que este Hotfix introduce problemas de seguridad, como actualizaciones de Windows no será capaces de aplicaciones de parche construidas como tal.

En otro post, Nick Guerrera sugiere empaquetado el Visual C++ Runtime redistribuible con sus aplicaciones, que se instala rápidamente y es independiente de Visual Studio.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X