Daily Archives: 30 Dicembre, 2008

Trovare una dll mancante

Pubblicato da

Trovare una dll mancante

Sarà capitato a tutti, utilizzando Windows di incappare in un messaggio di “DLL mancante”.
Le DLL sono librerie a collegamento dinamico (dynamic-link library) ossia un insieme di funzioni e dati che vengono caricati al momento (si dice on demand) da applicativi o dal sistema operativo stesso.

Ci sono vantaggi e svantaggi con questo sistema (da Wikipedia)

La separazione del codice in librerie a collegamento dinamico permette di spezzare i programmi in parti concettualmente separate, che verranno caricate solo se effettivamente necessarie. Inoltre, una singola libreria può essere caricata in memoria una sola volta e utilizzata da più programmi, il che permette di risparmiare le risorse del sistema. Questo metodo di loading on demand consente, inoltre, installazioni parziali di un sistema software, in cui sono effettivamente presenti sulla memoria di massa solo le librerie associate alle funzioni che l’utente desidera.

Un altro vantaggio è la possibilità di aggiornare un programma modificando solo le DLL: inserendo una versione diversa della DLL, che contiene ad esempio dei bug fix, tutti i programmi che la usano saranno automaticamente “aggiornati” senza bisogno di essere ricompilati.

Il principale svantaggio è legato al fatto che una nuova versione di una DLL potrebbe effettuare dei cosidetti breaking changes in modo volontario o a causa di bug. Un breaking change è una modifica del comportamento di una funzione che la rende non più compatibile con le convenzioni in uso (ad esempio, una funzione che prima ritornava NULL in caso di errore nei parametri e ora setta errno e ritorna un valore non nullo). Ancora più critico il caso in cui un programma di installazione sovrascriva una DLL con una versione più vecchia. Questi problemi, ben noti ai programmatori Windows, sono chiamati in gergo “DLL Hell” (inferno delle DLL).

Nel caso ci serva una DLL specifica possiamo far riferimento ad un catalogo online delle DLL più diffuse: ALLDLL.net

Link: ALLDLL.net