Quiero hacer exactamente lo que se describe here, pero la solución aceptada no funciona para mí. Supongo que la razón se explica here:Cargue 2 versiones de la misma DLL en el mismo proceso
Si un DLL con dependencias se carga especificando una ruta completa, el sistema búsquedas de archivos DLL dependientes de la DLL como si estuvieran cargados sólo con sus nombres de los módulos.
Si una DLL con el mismo nombre del módulo se ya cargado en la memoria, el sistema sólo cheques para la redirección y hace un manifiesta antes de resolver a la DLL cargada, no importa en qué directorio que se encuentra. El sistema no buscar para la DLL.
Deseo tener mi aplicación en la siguiente estructura.
c:\Exe
|
|----- c:\DLL\DLL.dll, c:\DLL\common.dll
|
|----- c:\DLL2\DLL2.dll, c:\DLL2\common.dll
Mi EXE cargará los archivos DLL a través
LoadLibrary("c:\\DLL\\DLL.dll");
LoadLibraryEx("c:\\DLL2\\DLL2.dll");
común se carga implícitamente en ambos casos.
Intenté la opción SetDllDirectory, pero siempre hay solo un common.dll cargado.
He agregado la información de versión en common.dll. c: \ DLL \ common.dll tiene la versión 2.0.1.0, mientras que c: \ DLL2 \ DLL2.dll tiene la versión 4.0.1.0
Integré el siguiente manifiesto con la información de la versión correspondiente, pero no fue de ayuda.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="common" version="4.0.1.0" processorArchitecture="x86"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
¿Existe una solución a este problema?
Gracias. Integré los manifiestos en las DLL. Entonces, parece que hice lo que recomiendas en 1. ¿O me estoy perdiendo algo? Es el manifiesto correcto? – PeeWee2201
Agregué algunas aclaraciones sobre el método 1. –
Gracias. Lo tengo funcionando. Tuve que cambiar a Windows 7 y usar la herramienta SxsTrace para ver qué está pasando. Una vez que está configurado, es bastante fácil, pero sin la herramienta no tiene visibilidad sobre lo que está mal – PeeWee2201