Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

Загрузка Dll   Найти похожие ветки 

 
BlackCat   (2003-03-19 18:45) [0]

Как LoadLibrary приспособить к загрузки не из файла а из памяти. Или может создания файла в памяти.
Проблема в том, что есть Dll(её содержимое) и необходимо вызвать функцию из неё. Или может создать нечто похожее на DLL ручками?


 
Clickmaker ©   (2003-03-19 18:54) [1]

Так содержимое же не из воздуха берется, наверно. Сохранить в файл и Load


 
AlexRush ©   (2003-03-20 11:17) [2]

BlackCat >> "есть Dll(её содержимое" - обьясни конкретнее, что значит "Содержимое" и что значит "Есть".
Стандартные LoadLibrary и LoadLibraryEx могут загрузить PE модуль только из файла.
" создать нечто похожее на DLL ручками" - можно в рантайме создать кусок кода, но необходимо будет учесть все поправки(Relocations) - довольно мутное занятие. Я немного занимаюсь подобными вещами, опиши конкретно проблему - может чем помогу.


 
BlackCat   (2003-03-21 09:16) [3]

Смысл в том, что хочу сделать свой Install`ер. И к EXE файлу буду прикреплять модули DLL, которые он должен использовать.
EXE их читает в память(полностью всё содержимое, начиная с MZ и до конца) Необходимо выловить экспортируемые функции и выполнить.


 
Digitman ©   (2003-03-21 09:29) [4]

А ты считаешь, что образ библиотеки, загруженной в память таким примитивным образом, готов к использованию ? Т.е. никаких доп.действий (кроме получения каким-то образом адресов эксп.ф-ций) штатный сист.загрузчик не выполняет ? "бросил файл библ-ки в память" - и все ? готово к применению ?


 
Игорь Шевченко ©   (2003-03-21 09:31) [5]

Хороший инсталлер сохраняет DLL из ресурсов DLL во временный каталог и запускает функции стандартным образом (LoadLibrary, GetProcAddress и т.п.) - примеры - MSI, InstallShield и т.д.
Не надо изобретать велосипед с квадратными колесами - не поедет.


 
Digitman ©   (2003-03-21 10:37) [6]

Кр.того (как вполне разумная альтернатива твоему будущему "велосипеду с квадратными колесами"), есть готовый (пока еще - OpenSource) инсталлятор InnoSetup3 (with Pascal Script Extension). Результат его работы - один единственный исп.файл дистрибутива, содержащий "в одном флаконе" все, что необходимо для инсталляции конкретного прогр.продукта, т.е. как раз то, что тебе требуется (судя по вопросу). Если же по ходу инсталляции тебе нужны вызовы каких-то ф-ций из каких-то собственных DLL, то и это вполне можно обойти : секция [code] скрипта инсталляции может содержать Паскаль-текст, реализующий нужный алгоритм. Иными словами - функциональность DLL, участвующих в процессе инсталляции, просто переносится (в дан.случае - в виде текста Паскаль-программы в секции [code] скрипта) в исп.код результирующего EXE-файла - инсталляционного дистрибутива.


 
BlackCat   (2003-03-23 23:55) [7]

А велик с квадратными колёсами всё-же нужен. Такова задача, чтобы не сохранять файлы во всякие Temp-каталоги. И где найти этот InnoSetup3. Digitman ©, я понимаю, что не всё так просто, там ещё инициализировать DLL надо всякими там DllMain. Но может где пример есть, я же за советом прищёл, чтобы секономить время!!! А на DLL строиться вся оболочка. Но DLL это слижком жирно, может есть какой другой способ выдирания готового откомпилированного кода?


 
Digitman ©   (2003-03-24 08:48) [8]


> BlackCat


http://www.innosetup.com


> я понимаю, что не всё так просто, там ещё инициализировать
> DLL надо всякими там DllMain


Вызов DllMain - лишь финальный этап загрузки/инициализации библ-ки ! Работа сист.загрузчика при загрузке любого PE-модуля (не только DLL) весьма сложна и изощренна, и отнюдь не сводится только к копированию файла модуля в память процесса (да и копирование происходит вовсе не так примитивно, как ты себе представляешь) и вызову DllMain




Страницы: 1 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
1-70363
FZ*XupypG
2003-05-10 04:08
2003.05.22
Сохранение типа TColor в текстовый файл и чтение его оттуда


9-70085
Nimda
2002-12-16 11:18
2003.05.22
Движок


1-70378
OpoloXAI
2003-05-10 17:46
2003.05.22
mainForm.Hide


1-70309
paxer
2003-05-08 13:05
2003.05.22
Как написать числовую константу в двоичном формате?


14-70426
Санечка
2003-05-01 20:36
2003.05.22
Открытие и сохранение файла (*.dbf)