Originariamente inviato da oregon
All'interno di un file PE (Portable Executable), ovvero del normale file exe Win32, esiste una tabella, la "Import Directory" in cui il linker deposita il nome delle DLL "implicitamente collegate" e tutti gli ordinali delle funzioni di tali DLL usate dall'eseguibile.
Questo avviene indicando al linker il nome delle .lib corrispondenti alle dll da utilizzare, ovviamente, con la precisazione che il collegamento sia comunque dinamico e non statico.
In questo modo le lib non vengono collegate staticamente ma servono per ricavare le informazioni che andranno inserite nelle Import Directory del file PE.
Quando il loader del PE di Windows, carica in memoria l'eseguibile, esplora la Import Directory. Se una dll elencata in questa tabella non e' ancora presente in memoria, viene caricata e vengono risolti tutti gli offset, altrimenti ottiene l'indirizzo base del caricamento per aggiustare gli offset.
Quando non si ha a disposizione la .lib corrispondente, le funzioni della DLL possono essere utilizzate con il consueto metodo della LoadLibrary, ma di questo non se ne occupera' automaticamente il loader ma il programma stesso.