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.
Allora vediamo se ho capito,in effetti queste cose le conosco solo superficialmente:
1)la dll contiene il codice vero e proprio delle funzioni della libreria
2)la lib idem
3)la dll può essere linkata dinamicamnete all'exe in due modi o da codice con loadlibrary o mediante parametri al linker che gli indichino la lib corrispondente e che gli indichino di effettuare un link dinamico.
4)la lib può anche essere usata per un link statico e quindi "iniettata" nell'exe con tutto il codice delle funzioni

Correggetemi se ho sbagliato in qualche punto.
Ora se è tutto giusto mi chiedo: ma allora se la lib la uso per un caricamento dinamico ho insieme lo svantaggio di un aumento di dimensione del programma e l'overhead del caricamneto dinamico? Oppure in questo secondo caso il linker si limita ad inserire nell'exe solo alcune informazioni (relative alla dll) contenute nella lib?