Форум: "WinAPI";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
ВнизЗагрузка 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c