LoadLibrary e AfxLoadLibrary
I processi chiamano LoadLibrary o LoadLibraryEx per collegarsi in modo esplicito a una DLL. (uso delle app MFCAfxLoadLibrary o AfxLoadLibraryEx. Se la funzione ha esito positivo, esegue il mapping della DLL specificata nello spazio degli indirizzi del processo chiamante e restituisce un handle alla DLL. L'handle è necessario in altre funzioni usate per il collegamento esplicito, GetProcAddress
ad esempio e FreeLibrary
. Per altre informazioni, vedere Collegamento esplicito.
LoadLibrary
tenta di individuare la DLL usando la stessa sequenza di ricerca usata per il collegamento implicito. LoadLibraryEx
offre maggiore controllo sull'ordine dei percorsi di ricerca. Per altre informazioni, vedere Dynamic Link Library Search Order.For more information, see Dynamic Link Library Search Order. Se il sistema non riesce a trovare la DLL o se la funzione del punto di ingresso restituisce FALSE, LoadLibrary
restituisce NULL. Se la chiamata a LoadLibrary
specifica un modulo DLL già mappato nello spazio degli indirizzi del processo chiamante, la funzione restituisce un handle della DLL e incrementa il conteggio dei riferimenti del modulo.
Se la DLL ha una funzione punto di ingresso, il sistema operativo chiama la funzione nel contesto del thread che ha chiamato LoadLibrary
o LoadLibraryEx
. La funzione del punto di ingresso non viene chiamata se la DLL è già collegata al processo. Ciò si verifica quando una chiamata precedente a LoadLibrary
o LoadLibraryEx
per la DLL non ha avuto una chiamata corrispondente alla FreeLibrary
funzione.
Per le applicazioni MFC che caricano DLL di estensione MFC, è consigliabile usare AfxLoadLibrary
o AfxLoadLibraryEx
anziché LoadLibrary
.LoadLibraryEx
Le funzioni MFC gestiscono la sincronizzazione dei thread prima di caricare la DLL in modo esplicito. Le interfacce (prototipi di funzione) a e AfxLoadLibraryEx
sono uguali LoadLibrary
a AfxLoadLibrary
e LoadLibraryEx
.
Se Windows non riesce a caricare la DLL, il processo può tentare di eseguire il ripristino dall'errore. Ad esempio, potrebbe notificare all'utente l'errore, quindi richiedere un altro percorso alla DLL.
Importante
Assicurarsi di specificare il percorso completo di tutte le DLL. La directory corrente può essere cercata per prima quando i file vengono caricati da LoadLibrary
. Se non si qualifica completamente il percorso del file, potrebbe essere caricato un file diverso da quello previsto. Quando si crea una DLL, usare l'opzione del linker /DEPENDENTLOADFLAG per specificare un ordine di ricerca per le dipendenze DLL collegate in modo statico. Nelle DLL usare entrambi i percorsi completi per caricare in modo esplicito le dipendenze e LoadLibraryEx
AfxLoadLibraryEx
chiamare parametri per specificare l'ordine di ricerca del modulo. Per altre informazioni, vedere Sicurezza della libreria a collegamento dinamico e Ordine di ricerca della libreria di collegamenti dinamici.