A través de los años, mi aplicación ha crecido de 1MB a 25MB y espero que aumente a 40, 50 MB. No uso DLL's, pero pongo todo en este gran ejecutable.¿Un archivo ejecutable grande o muchos DLL pequeños?
Tener una gran ejecutable tiene ciertas ventajas:
- Instalación de mi aplicación en el cliente está realmente: copiar y ejecutar.
- Las actualizaciones pueden ser fácilmente comprimido y enviado al cliente
- No hay riesgo de tener conflicto DLL (donde el cliente tiene la versión X del EXE, pero la versión Y de la DLL)
La gran La desventaja del gran EXE es que los tiempos de enlace parecen crecer exponencialmente.
Problema adicional es que una parte del código (digamos alrededor del 40%) se comparte con otra aplicación. Una vez más, las ventajas son que:
- no hay riesgo de tener una mezcla de versiones de DLL incorrectos
- Cada desarrollador puede hacer cambios en el código común que acelera la evolución.
Pero, una vez más, esto tiene un serio impacto en los tiempos de compilación (todos compilan el código común nuevamente en su PC) y en los tiempos de enlace.
La pregunta Grouping DLL's for use in Executable menciona la posibilidad de mezclar DLL en un ejecutable, pero parece que esto todavía requiere que vincules todas las funciones manualmente en tu aplicación (usando LoadLibrary, GetProcAddress, ...).
¿Cuál es su opinión sobre los tamaños de ejecutables, el uso de DLL y el mejor 'equilibrio' entre la implementación fácil y el desarrollo fácil/rápido?
Dado que las desventajas enumeradas del modelo "un gran EXE" son todas para el desarrollador, no para el usuario, esta idea tiene mucho sentido. –
De hecho, eso es lo que estoy haciendo ahora, pero la razón por la que hice esta pregunta es porque tenía la impresión de que todo el mundo usa muchas DLL, pero aparentemente, todas las respuestas aquí también parecen preferir la solución EXE única. – Patrick