DLL puede hacer para los pequeños workingSet tiempo de ejecución, si la aplicación se escribieron de una manera tal como para gestionar el cambio de contexto entre DLL (Por ejemplo, para aplicaciones más grandes, podría dividir la funcionalidad de las aplicaciones en los límites lógicos para ser implementado dentro de archivos DLL autónomos y permitir que el cargador se cargue en tiempo de ejecución).
Si bien es cierto que las DLL se instalan/copian principalmente en la misma carpeta que el .exe, el requisito es cumplir con las reglas de carga de cargadores (que incluye la carpeta del sistema (mala idea), PATH, directorio actual [ver LoadLibrary Documentación de Ayuda API para una descripción completa de la precedencia]).
Has "agregado" un comentario con respecto a los archivos LIB. En TANTO Dinámico como Estático, se vincula usando archivos LIB. Pero en el caso de la carga dinámica, entrega el .exe junto con todas las DLL dependientes (los archivos LIB contienen los puntos de entrada exportados para la DLL correspondiente).
Prefiero las DLL ya que mis aplicaciones tienden a ser más grandes y segmentadas y esto me permite entregar SOLAMENTE esos componentes actualizados (DLL). Incluso separamos la lógica empresarial de la presentación en sus propias DLL [permite la localización de la dll de solo recursos independiente de la lógica.
La programación mediante DLL provoca que se obligue a cumplir el contrato de la clase/método o función exportada.
+1, buena respuesta. Además, cuando se trata de bibliotecas que usan varias aplicaciones, si se utilizan bibliotecas dinámicas, no es necesario cargar una copia completa de la biblioteca para cada programa, el código ejecutable de la biblioteca se puede compartir entre todos los programas y reducirlo aún más. uso. –