Я хочу сделать именно то, что описано здесь , но принятое решение не работает для мне. Я полагаю, причина объясняется здесь :
Если загружена 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
Я встроил следующий манифест с соответствующей информацией о версии, но это не помогло.
Есть ли решение этой проблемы?