Главная страница
    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.46 MB
Время: 0.009 c
14-70519
KSergey
2003-05-01 12:00
2003.05.22
Изображения TIFF и JPEG


14-70513
Навичек
2003-04-30 03:25
2003.05.22
Ошибка при динамическом создание обекта


14-70512
leseal
2003-05-04 05:24
2003.05.22
С чего начать???


1-70203
Tatiana
2003-05-08 10:30
2003.05.22
Indexatsija massiva


1-70242
Kardash
2003-05-11 15:17
2003.05.22
Как сделать фон формы градацией какого-нибудь цвета ???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский