Загрузить 2 версии одной и той же DLL в одном процессе

Я хочу сделать именно то, что описано здесь , но принятое решение не работает для мне. Я полагаю, причина объясняется здесь :

Если загружена DLL с зависимостями указав полный путь, система ищет DLL зависимые DLL как будто они были загружены только их имена модулей.

Если DLL с тем же именем модуля уже загружен в память, система проверяет только перенаправление и проявить перед разрешением на загруженная DLL, независимо от того, в каком каталоге он есть. Система не ищет для библиотеки DLL.

Я хочу иметь свое приложение в следующей структуре.

c:\Exe
 |
 |----- c:\DLL\DLL.dll, c:\DLL\common.dll 
 |
 |----- c:\DLL2\DLL2.dll, c:\DLL2\common.dll

Мой EXE будет загружать библиотеки DLL через

LoadLibrary("c:\\DLL\\DLL.dll");
LoadLibraryEx("c:\\DLL2\\DLL2.dll");

common загружается неявно в обоих случаях.

Я пробовал параметр SetDllDirectory, но там всегда загружается только один common.dll.

Я добавил информацию о версии в common.dll. c: \ DLL \ common.dll имеет версию 2.0.1.0, а c: \ DLL2 \ DLL2.dll - версию 4.0.1.0

Я встроил следующий манифест с соответствующей информацией о версии, но это не помогло.



  
    
      
    
  

Есть ли решение этой проблемы?

8
задан Community 23 May 2017 в 10:31
поделиться