Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Вниз

DLL и EXE в одном флаконе. 


Alex Marmuzevich   (2002-01-08 23:12) [0]

Сегодня в голову стукнула мудрая мысль.
А можно ли сделать стандартными средствами Delphi (Builder) не прибегая к хакерству такую вещь:
- создать нормальное приложение, которое должно красиво работать и содержать некоторые формы.
- использовать это же приложение как DLL для доступа к этим же формам (понятно, что понадобятся экспортируемые функции и создание + разрушение форм вручную, но так ведь это не проблема).
Смысл: большой проект красиво работает с DLL, в которых много чего и формы. Однако для тестирования лучше запускать приложение.
Понятно, что можно создать 2 проекта (на DLL и EXE)
Или для запуска DLL как приложения вызывать RunDll. Но это не интересно.
Кто чего поможет?



valery_f   (2002-01-09 11:49) [1]

Кажись пахнет OLE-сервером...
Если же тебя интересует просто отладить DLL - в DLL проекте в Run /Run parameters -> Host application ты можешь указать EXE, который зовет твою DLL и отлаживай наздоровье.



Alex Marmuzevich   (2002-01-09 13:06) [2]

Вообще то вопрос был в том, можно ли очень просто сделать 2 точки входа в проекте, WinMain и DllMain.
А уж как отладить DLL, так это слава богу уже давно не проблема ;)



nikkie   (2002-01-09 15:44) [3]

вариант 1.
делаем File/New/Application - добавляем туда все нужные юниты, компиляем - получаем exe
делаем File/New/DLL - добавляем туда все нужные юниты, компиляем - получаем dll

исходники для exe и dll различаются на один файл.

вариант 2.
совмещаем dpr для exe и dpr для dll в одном dpr с помощью $IFDEF. (сам не пробовал, прошу не бить)

компилировать один файл, который можно запускать как exe и загружать как dll, наверное, нельзя - мне кажется это должно быть прописано в заголовке PE.



valery_f   (2002-01-09 16:14) [4]

Alex Marmuzevich>2 точки входа в проекте, WinMain и DllMain.

Такого, действительно, нет. Однако возможна "эмуляция" - сделать EXE OLE-сервером. В этом случае EXE будет работать и сам по себе и плюс выставлять наружу COM-объекты (вместо DLL-функций). Microsoft, к примеру, делает это на каждом шагу.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.027 c
3-90194           Грифон                2001-12-23 11:33  2002.01.28  
SQL


7-90392           REL                   2001-10-17 10:16  2002.01.28  
Com порт


3-90237           Д_Россиев             2001-12-23 10:25  2002.01.28  
Подключение TDataSource к Access-Application


3-90217           kay                   2001-12-24 22:12  2002.01.28  
BDE


1-90321           Sasha2                2002-01-11 11:02  2002.01.28  
Как в TMemoryTable задать Filter?