Dynamic-link library: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m tag obsoleti |
||
Riga 20:
Quanto segue descrive la struttura ed il funzionamento di una libreria a collegamento dinamico in ambiente Windows, tuttavia i concetti espressi sono generalmente equivalenti in tutti i sistemi che permettono l'uso di librerie dinamiche.
Una libreria a collegamento dinamico è a tutti gli effetti un codice eseguibile. Ogni [[file eseguibile]] (EXE o DLL) dispone di un [[punto d'ingresso]] (''entry point'') invocato dal sistema operativo subito dopo il caricamento. Per una DLL il punto d'ingresso è mappato per convenzione sulla [[funzione (informatica)|funzione]] <
La funzione <
A differenza di un file EXE, la DLL deve uscire dall'entry point non appena ha terminato le inizializzazioni necessarie.
Riga 28:
=== Struttura ===
Per semplificare, una libreria può essere pensata come una raccolta di funzioni. Ognuna di queste funzioni avrà il proprio indirizzo di base, calcolato come [[offset]] rispetto all'[[indirizzo di base]] assegnato dal sistema operativo durante il caricamento della libreria (vedi paragrafo successivo). Ciò che distingue una libreria dinamica è che queste funzioni possono essere ''esportate'', ovvero i loro nomi vengono posti in una lista in una sezione dell'eseguibile. Perciò è possibile determinare il punto di ingresso di una funzione con una ricerca testuale basata sul nome della funzione. Questa operazione è svolta dall'[[Windows API|API]] <
=== Caricamento ===
Riga 60:
=== Collegamento ad un eseguibile ===
Il collegamento di un eseguibile a una libreria dinamica avviene durante l'esecuzione (a ''run time'') e avviene tramite l'API <
Il collegamento può essere di due tipi: esplicito o implicito.
Riga 66:
==== Collegamento esplicito ====
Il collegamento esplicito viene gestito direttamente dal codice del programma con l'utilizzo delle due API <
==== Collegamento implicito ====
|