Estoy hablando de win32 dlls, esos archivos pe simple. Estoy confundido después de hacer una prueba en comparación con lo que vi en el proceso explorer.exe.Podríamos tener 2 archivos DLL con el mismo nombre que se está cargando en un proceso
me escribió una prueba con los siguientes módulos: (C++)
enlaces DLLLoader.exe a A.dll en la misma carpeta.
B.dll enlaces a A.dll (2) en otra carpeta. (A.dll (2) es una DLL totalmente diferente de A.dll, pero con el mismo nombre)
DLLLoader.exe cargará B.dll explícitamente a través de :: LoadLibrary.
Ahora empiezo DllLoader.exe, en primer lugar, se cargará A.dll, pero cuando intenta cargar B.dll, simplemente falló: sospecho que es porque B.dll piensa que A.dll ya está cargado en proceso pero, de hecho, el que se carga no es el que B.dll quería, la tabla de importación/exportación no puede coincidir, por lo que no se pudo cargar B.dll.
Esto parece decirnos que no podemos cargar 2 dlls del mismo nombre en el mismo proceso, incluso si tienen una ruta diferente.Pero cuando utilicé explorador de proceso para supervisar los módulos cargados en el proceso explorer.exe de Ventanas, pude ver después de 2 DLL que se carga, con el mismo nombre:
comctl32.dll experiencia del usuario Controles Biblioteca C: \ WINDOWS \ WinSxS ... \ comctl32.dll
comctl32.dll Common Controls Biblioteca C: \ WINDOWS \ system32 \ comctl32.dll
Podría alguno de ustedes arrojar algunas luces sobre esto?
Para implicar la carga (en función de la dependencia de DLL), solo podríamos tener 1 dll cargado con el mismo nombre. –