Mi entorno actual preferido de C++ es la edición gratuita y excelente de Microsoft Visual Studio 2005 Express. De vez en cuando, he enviado archivos .exe de lanzamiento a otras personas con resultados agradables. Sin embargo, recientemente hice el inquietante descubrimiento de que los resultados agradables se basaban en más suerte que me gustaría. Intentar ejecutar uno de estos programas en un antiguo (2001 vintage, no actualizado escrupulosamente) cuadro de XP no me dio nada más que un desagradable "El sistema no puede ejecutar x.exe" (o similar) mensaje.¿Cómo puedo hacer un .exe totalmente vinculado de forma estática con Visual Studio Express 2005?
Algunos google revelaron que con este conjunto de herramientas, incluso la especificación de enlaces estáticos da como resultado un hello-world.exe simple que realmente depende de archivos .dll adicionales (msvcm80.dll, etc.). Un sistema de elaboración de versiones increíblemente elaborado (¿alguno de los archivos de manifiesto?) No permitirá que el .exe se ejecute sin las versiones .dll correctas. No quiero ni necesito esto, solo quiero un archivo .exe autocontenido a la antigua que no haga más que las operaciones de Win32 de denominador común más bajo y se ejecute en cualquier SO viejo win32.
¿Alguien sabe si es posible hacer lo que quiero hacer con mi conjunto de herramientas existente?
Gracias.
"Si está utilizando otras bibliotecas, puede que necesite decirle al vinculador que ignore explícitamente el CRT vinculado dinámicamente". Recientemente me encontré con este problema. Estaba construyendo una aplicación wxWidgets, descubrí que necesitaba reconstruir las bibliotecas wxWidgets con la misma modificación de generación de código –
El hombre 300 caracteres no es muchos. En caso de que el comentario anterior no esté claro, el problema es que tanto sus archivos .cpp como cualquier archivo .cpp de biblioteca deben tener 'multiproceso' en lugar de 'dll multiproceso', de lo contrario es posible que obtenga errores de enlace. –
Esto presenta numerosos problemas relacionados con la gestión de heap con los que probablemente no quiera hacer nada. –