una tipos sirve que programacion para moneda librerias libreria informatica funciones dlls como bibliotecas biblioteca archivos archivo abrir dll

dll - tipos - que es una libreria en programacion



Diferencia entre el tiempo de carga y el enlace dinámico en tiempo de ejecución (3)

¿Cuál es la diferencia entre el enlace dinámico en tiempo de carga y el enlace dinámico en tiempo de ejecución?


La vinculación dinámica del tiempo de carga la realiza el sistema operativo cuando se carga una aplicación. OS usa la información que el enlazador ha colocado en el archivo para ubicar los nombres de la dll, y luego busca esos dlls, y si no puede localizar el Dll, simplemente termina y da un mensaje de error; de lo contrario, OS asigna la DLL al espacio de direcciones virtuales del proceso y aumenta el recuento de referencias de DLL.


Olvidó la etiqueta de "tarea".

La vinculación en tiempo de carga significa que la DLL a la que se está conectando se carga cuando se inicia su aplicación, independientemente de si realmente usa o no la funcionalidad en esa DLL. La vinculación dinámica significa que la funcionalidad de la DLL solo se carga cuando realmente se necesita.


Enlace dinámico de tiempo de carga

Cuando un ejecutable está vinculado a una DLL en el momento de la compilación, el enlazador no insertará el código del objeto, sino que insertará un apéndice que básicamente dice que una función de este nombre se encuentra en esta DLL .

Ahora, cuando se ejecute el ejecutable, faltarán bits del ejecutable (es decir, los stubs de la función ), por lo que antes de que el programa pueda ejecutarse, el cargador de programa soluciona estas funciones faltantes reemplazándolas por puntos de entrada en los archivos DLL.

Solo después de que todos los stubs hayan sido reemplazados (es decir, resueltos) se permitirá ejecutar el ejecutable.

Eso es vinculación dinámica del tiempo de carga.

Enlace dinámico en tiempo de ejecución

En este caso, el archivo ejecutable no estaba vinculado a ningún archivo de biblioteca DLL, por lo que no contendrá ningún archivo adjunto en el dll y, como tal, el cargador de programas no tiene problemas para ejecutar el archivo ejecutable.

Pero la tarea de obtener acceso a la función desde dentro del DLL se deja en el ejecutable y se puede hacer usando la API de Windows de GetProcAddress .

Eso es un enlace dinámico en tiempo de ejecución.