Originariamente inviato da Fox82
Una dll è una libreria a collegamento dinamico; ne esiste cioè un'unica copia, gestita dal SO ed esterna ai programmi che ne fanno uso, che viene caricata nello spazio di memoria del processo che la utilizza.
Una libreria statica (.lib o .a) invece viene inserita (linkata) direttamente dentro l'eseguibile, ed entra a far parte di esso in tutto e per tutto.
Ovviamente le prime hanno il vantaggio di conservare una sola copia del codice sorgente, a fronte però di un leggero overhead per la loro gestione.
Per collegare una dll ad un progetto, puoi agire in due modi:
- utilizzare la libreria statica corrispondente, che si occupa di caricare automaticamente la dll dallo spazio di memoria del processo
- occuparti tu manualmente del caricamento tramite le API
Caso 1: durante la compilazione della dll avrai sicuramente ottenuto un file (.a o .lib a seconda del compilatore); inserendola dentro il processo avrai automaticamente accesso a tutti i metodi della dll.
Caso 2: devi conoscere un po di programmazione Windows, comunque tramite la funzione LoadLibrary crei un riferimento alla dll con il quale puoi ottenere ulteriori riferimenti ai metodi che ti servono (al momento non ricordo bene la funzione che serve per "agganciare" i metodi)
Con il secondo metodo ovviamente hai più controllo, pupi caricare la libreria solo quando ti serve (se ti serve) e rimuoverla quando non ti serve più
Spero di aver chiarito un po di dubbi.