|
|
|
Пути-дороги для 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
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |