Compatibilidad del vinculador con las DLL de carga retrasada
El vinculador de Visual C++ admite actualmente la carga retrasada de las DLL. Esto evita la necesidad de utilizar las funciones LoadLibrary y GetProcAddress de Windows SDK para implementar la carga retrasada de las DLL.
Antes de Visual C++ 6.0, la única forma de cargar una DLL en tiempo de ejecución era usando LoadLibraryyGetProcAddress; el sistema operativo cargaba la DLL una vez cargado el ejecutable o la DLL que lo utilizaba.
A partir de Visual C++ 6.0, al vincular estáticamente con una DLL, el vinculador proporciona opciones para retrasar la carga de la DLL hasta que el programa llame a una función dentro de esa DLL.
Una aplicación puede retrasar la carga de una DLL usando la opción /DELAYLOAD (Importación de carga retrasada) del vinculador con una función auxiliar (implementación predeterminada proporcionada por Visual C++). La función auxiliar cargará la DLL en tiempo de ejecución llamando a LoadLibrary y GetProcAddress.
Se debe considerar la carga retrasada de una DLL si:
El programa no puede llamar a una función dentro de la DLL.
Es posible que no se llame a una función de la DLL hasta bien avanzada la ejecución del programa.
La carga retrasada de una DLL se puede especificar durante la compilación de un proyecto .EXE o .DLL. Un proyecto DLL que retrasa la carga de una o varias DLL no debe llamar a un punto de entrada de carga retrasada en Dllmain.
Los temas siguientes describen la carga retrasada de las DLL: