Sto parlando di win32 dlls, quei semplici file pe. Sono confuso dopo aver fatto un test rispetto a quello che ho visto nel processo explorer.exe.Potremmo avere 2 DLL con lo stesso nome da caricare in un unico processo
ho scritto un test con i seguenti moduli: (C++)
collegamenti dllloader.exe a A.dll nella stessa cartella.
B.dll link a A.dll (2) in un'altra cartella. (A.dll (2) è una DLL completamente diversa da A.dll, ma con lo stesso nome)
DLLLoader.exe caricherà B.dll esplicitamente attraverso :: LoadLibrary.
Ora avvio DllLoader.exe, in primo luogo, verrà caricato A.dll, ma quando si tenta di caricare B.dll, non è riuscito: sospetto che sia perché B.dll pensa che A.dll sia già caricato nel processo , ma in realtà, quello caricato non è quello voluto da B.dll, la tabella di importazione/esportazione non può corrispondere, quindi non è stato possibile caricare B.dll.
Questo sembra dirci che non possiamo caricare 2 DLL con lo stesso nome nello stesso processo, anche se sono di percorso diverso.Ma quando ho usato Process Explorer per monitorare moduli caricati nel processo explorer.exe di Windows ho potuto vedere dopo 2 DLL corso di caricamento, con lo stesso nome:
comctl32.dll User Experience Controlli libreria C: \ WINDOWS \ WinSxS ... \ comctl32.dll
comctl32.dll Controlli comuni Biblioteca C: \ WINDOWS \ system32 \ comctl32.dll
Potrebbe qualcuno di voi gettare qualche luce su questo?
Per quanto riguarda il caricamento impilict (basato sulla dipendenza DLL), è possibile caricare solo 1 dll con lo stesso nome. –