Имя: Пароль:
IT
 
Пути-дороги для LoadLibrary/LoadLibraryEx
0 H A D G E H O G s
 
09.08.13
16:59
Дня доброго.
Ситуация:

Есть программа project.exe, в каталоге которого есть Main.dll, Calc.dll
Программа валяется в версионных каталогах (прям как 1С :)
C:\Calculate\1.1\
C:\Calculate\1.2\

Программа C:\Calculate\1.2\project.exe использует функции из Main.dll почти сразу по загрузке. Тоесть, он болтаются в ее памяти.
Модуль Calc.dll также юзает функции из Main.dll

Все хорошо.

Но иногда нам надо подгружать модуль Calc.dll из старой версии.
C:\Calculate\1.1\Calc.dll

Он и подгружается. Но он юзает новую версию Main.dll и вываливает ошибку, ибо
LoadLibrary делается не по полному пути, а тупо по имени.

- Такая ситуация не рассмотрена в "DLL-кошмаре"
- Параметр LOAD_WITH_ALTERED_SEARCH_PATH функции LoadLibraryEx при загрузке Calc.dll из старой версии не подходит.
- project.exe.local не подходит.

Вот кроме сплайсинга LoadLibrary/LoadLibraryEx и идей то нет.
Есть идеи как сделать нежно? Бида ведь.
1 H A D G E H O G s
 
09.08.13
17:13
Как то тема сгинула...
Ну-ка приподнимем.
2 H A D G E H O G s
 
09.08.13
22:13
Подниму.
Может ночные обитатели подтянутся.
3 XLife
 
09.08.13
22:15
в текущей папке файл переименовать... из другой скопировать... подгрузить, поюзать... потом назад))
4 H A D G E H O G s
 
09.08.13
22:19
(3) Нельзя. Вдруг в текущей папке понадобиться файлег.
Ты, кстати, только что по факту сплайсинг описал, только еще более грубо.
5 Принт
 
09.08.13
22:32
именовать dll-ки поверсионно
6 H A D G E H O G s
 
09.08.13
22:33
(5) Нельзя.
7 Принт
 
09.08.13
22:35
(6) а нужно
8 H A D G E H O G s
 
09.08.13
22:36
(7) Тогда уж сплайсинг.
9 Torquader
 
10.08.13
23:50
На самом деле, нужно менять имя dll, так как при загрузке Main.dll из дочерней dll происходит подстановка уже загруженной в память, так как Mail.dll уже была загружена основным процессом.
10 Бывший адинэсник
 
11.08.13
01:06
(0) конечно есть идеи переименовать старый Calc.dll в Calk.dll и положить в корень, в project.exe в хексе найти обращение к calc и тогось... перебить на calk
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn