/DELAY (Configuración de las importaciones de carga retrasada)
/DELAY:UNLOAD
/DELAY:NOBIND
Comentarios
La opción /DELAY controla la carga retrasada de las DLL:
El calificador UNLOAD le indica a la función auxiliar de carga retrasada que debe aceptar la descarga explícita de la DLL. La tabla de direcciones de importación (IAT) se restablece en su formato original, con lo que los punteros IAT se invalidan y quedan sobrescritos.
Si no se selecciona UNLOAD, las llamadas a FUnloadDelayLoadedDLL producirán un error.
El calificador NOBIND le indica al vinculador que no incluya una IAT enlazable en la imagen final. De manera predeterminada, se crea una tabla IAT enlazable para las DLL de carga retrasada. La imagen resultante no puede enlazarse estáticamente. (Las imágenes con tablas IAT enlazables puede enlazarse estáticamente antes de la ejecución). Vea /BIND.
Si la DLL está enlazada, la función auxiliar intentará utilizar la información de enlace en lugar de llamar a GetProcAddress en cada una de las importaciones a las que se hace referencia. Si la marca de tiempo o la dirección preferida no coinciden con las de la DLL cargada, la función auxiliar supondrá que la tabla IAT enlazada no está actualizada y continuará como si dicha tabla no existiera.
Aunque NOBIND aumenta el tamaño de la imagen del programa, puede llegar a acelerar el tiempo de carga de la DLL. Si la intención es no enlazar nunca la DLL, NOBIND impedirá que se genere la tabla IAT enlazada.
Para especificar la carga retrasada de DLL, utilice la opción /DELAYLOAD.
Para establecer esta opción del vinculador en el entorno de desarrollo de Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener más información, vea Establecer las propiedades de un proyecto de Visual C++.
Haga clic en la carpeta Vinculador.
Haga clic en la página de propiedades Avanzadas.
Modifique la propiedad DLL de carga retrasada.
Para establecer esta opción del vinculador mediante programación
- Vea DelayLoadDLLs.