Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Спрятать DLL


Автор: TSlava 5.4.2011, 09:44
День добрый!

У меня есть сторонняя a.dll
Интерфейс a.dll известен.
Есть проект. После сборки - b.exe файл.
Нужно спрятать a.dll в проект. Думаю использовать потом a.dll как внутренний ресурс.

В итоге после компиляции и сборки проекта хотелось бы чтобы a.dll была внутри b.exe.

Подскажите куда копать?

Спасибо. 

Автор: Frees 5.4.2011, 10:04
Цитата(TSlava @  5.4.2011,  12:44 Найти цитируемый пост)
В итоге после компиляции и сборки проекта хотелось бы чтобы a.dll была внутри b.exe.

Для этого нужны исходники dll, иначе никак.

Добавлено через 34 секунды
хочешь выдать чужую dll за свою программу?

Автор: TSlava 5.4.2011, 10:28
Цитата

Для этого нужны исходники dll, иначе никак.


Сырцы dll на сях ((

Цитата

хочешь выдать чужую dll за свою программу?


Ну что Вы в самом деле.))
Написал "сторонняя" - чтобы контекст вопроса был более понятен.
И Dll и Проект - единый механизм. Просто не хочу чтоб dll рядом лежала.

Автор: Frees 5.4.2011, 10:36
Цитата(TSlava @  5.4.2011,  13:28 Найти цитируемый пост)
Просто не хочу чтоб dll рядом лежала.

а что так, вполне нормальная ситуация?

Цитата(TSlava @  5.4.2011,  13:28 Найти цитируемый пост)
Сырцы dll на сях ((

для этого и придумали длл объединять функционал написанный на разных языках.

Добавлено через 39 секунд
Цитата(TSlava @  5.4.2011,  13:28 Найти цитируемый пост)
Просто не хочу чтоб dll рядом лежала.

можно и не рядом ее держать а в System32 например скопировать

Автор: TSlava 5.4.2011, 10:58
Не могу сказать что текущая реализация(два файла exe + dll) меня сильно напрягает.
Согласен с тем, что это более чем нормально!

Объединение exe и dll в один файл - не более чем просто удобство.

Спасибо за ответ!




Автор: cat512 5.4.2011, 16:44
Цитата

Сырцы dll на сях ((

Так это здорово, что они вообще есть.  Как вариант, можешь скомпилить сорцы с++ компилером в obj-файлы и потом статически прилинковать к основному делфи приложению.
Второй вариант - хакерский. Когда то был описан на RSDN, имеет некоторые недостатки (как не корректность использования некоторых функций win api loader)и неудобства, но вполне работает.
Смысл его в том, что бы создать в памяти процесса секцию и распаковать туда dll, которая лежит в секции ресурса основного приложения.

Автор: A11MaNi 5.4.2011, 19:08
Как вариант - можно хранить dll внутри exe - файла в виде ресурсов, и извлекать
 (что то вроде )
Код

function ExtractRes(ResType,ResName,ResNewName:String):Boolean;
var
 Res:TResourceStream;
 begin
  Res:=TResourceStream.Create(Hinstance,Resname,Pchar(ResType));
  Res.SaveToFile(ResNewName);
  Res.Free;
 end;

 куда/когда нужно. Ну а потом уже удалять, после использования.

Автор: TSlava 6.4.2011, 08:30
Спасибо за ответы!

Попытаюсь проработать вариант с ExtractRes.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)