Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Возможности Динамических библиотек в Delphi (https://forum.antichat.xyz/showthread.php?t=134023)

dzumohu4 10.08.2009 02:59

Возможности Динамических библиотек в Delphi
 
Нужны ответы на следующие вопросы:
Во первых. - что можно сделать в .dll каким функционалом можно обеспечить?
Во вторых - поддерживают .dll ли написанные на delphi различные компоненты этой же среды разработки например работы с сетевыми протоколами?
Что мне нужно:мне нужно чтобы .dll распаковывалась а затем подгружалась из некоторой программы, и выполняла функции мониторинга системы, с реализацией клиента серверной технологии.
Возможно ли такое? каковы ограничения динамических библиотек относительно обыкновенных исполняемых файлов.

Если неправильно поставил вопрос поправьте, !НЕ ФЛУДИТЕ! !НЕ ЗАНИМАЙТЕСЬ ТРОЛЛИНГОМ! !АФФТАРАМ рекомендуется воздержатся от ответа.

Ra$cal 10.08.2009 03:31

никаких особых ограничений нет. все что перечислил - возможно

De-visible 10.08.2009 04:33

Я Тролль.
Вообще все, что спросил читается по первым спискам выдачи гугла...
Так что это тупость...

slesh 10.08.2009 08:23

Вообще в DLL можно всё. Т.е. она может быть и хранилищем ресурсов, и форму в себе содержать и код программы. Другими словами DLL по функционалу чаще всего имеет больше преимуществ чем обычная прога за исключением ряда моментов:
1) DLL сама по себе не может работать, только в контексте какого либо приложения. т.е. DLL ты не можеш запустить как обычную прогу, её необходимо подгружать в уже запущенную прогу (ну или она автоматом подгрузится если есть импорт из неё.)
2) После завершения работы проги, DLL тоже будет выгружена

Зато плюсов очень много:
1) DLL можно подружать во все GUI процессы посредством ключика в реестре
2) DLL можно юзать для глобальных хуков(собственно говоря - это единственный документированный метод)
3) DLL можно выгрузить в любой момент и загрузить обратно.
4) довольно простой метод определения состояния работы с DLL посредством значения параметров вызова точки входа
DLL_PROCESS_ATTACH - Программа подключается к DLL
DLL_THREAD_ATTACH - Поток программы подключается к DLL
DLL_THREAD_DETACH - Поток "оставляет" DLL
DLL_PROCESS_DETACH - Exe "отсоединяется" от DLL

Но вообще за исключением хуков итд итп DLL желательно использовать только в следующих случаях:
1) расширение функционала проги, который ранее не был предусмотрен в ней - банальный плагины
2) если набор одних и тех же процедур и функций используется в нескольких прогах. То их легче вынести в одну DLL а не вкомпилировать в обе проги
3) Для большей структуризации проекта, когда много очень кода, то функции группировать по функционалу в отдельные модули которые и будут предствалять из себя DLL. очень полезно при больших проектах. Тем более что при обнаружении ошибки для исправления достаточно исправить только одну DLL а не весь проект.

dzumohu4 10.08.2009 15:34

Цитата:

Сообщение от slesh
Вообще в DLL можно всё. Т.е. она может быть и хранилищем ресурсов, и форму в себе содержать и код программы. Другими словами DLL по функционалу чаще всего имеет больше преимуществ чем обычная прога за исключением ряда моментов:
1) DLL сама по себе не может работать, только в контексте какого либо приложения. т.е. DLL ты не можеш запустить как обычную прогу, её необходимо подгружать в уже запущенную прогу (ну или она автоматом подгрузится если есть импорт из неё.)
2) После завершения работы проги, DLL тоже будет выгружена

Зато плюсов очень много:
1) DLL можно подружать во все GUI процессы посредством ключика в реестре
2) DLL можно юзать для глобальных хуков(собственно говоря - это единственный документированный метод)
3) DLL можно выгрузить в любой момент и загрузить обратно.
4) довольно простой метод определения состояния работы с DLL посредством значения параметров вызова точки входа
DLL_PROCESS_ATTACH - Программа подключается к DLL
DLL_THREAD_ATTACH - Поток программы подключается к DLL
DLL_THREAD_DETACH - Поток "оставляет" DLL
DLL_PROCESS_DETACH - Exe "отсоединяется" от DLL

Но вообще за исключением хуков итд итп DLL желательно использовать только в следующих случаях:
1) расширение функционала проги, который ранее не был предусмотрен в ней - банальный плагины
2) если набор одних и тех же процедур и функций используется в нескольких прогах. То их легче вынести в одну DLL а не вкомпилировать в обе проги
3) Для большей структуризации проекта, когда много очень кода, то функции группировать по функционалу в отдельные модули которые и будут предствалять из себя DLL. очень полезно при больших проектах. Тем более что при обнаружении ошибки для исправления достаточно исправить только одну DLL а не весь проект.

Моя идея заключается в том что !Весь! функционал заключается именно в .dll, поскольку я не имею доступа к исходному коду приложения.

Спасибо за ответы(Троль Изыйди!!!)))

sn0w 11.08.2009 13:17

Цитата:

Сообщение от dzumohu4
Нужны ответы на следующие вопросы:
Во первых. - что можно сделать в .dll каким функционалом можно обеспечить?
Во вторых - поддерживают .dll ли написанные на delphi различные компоненты этой же среды разработки например работы с сетевыми протоколами?
Что мне нужно:мне нужно чтобы .dll распаковывалась а затем подгружалась из некоторой программы, и выполняла функции мониторинга системы, с реализацией клиента серверной технологии.
Возможно ли такое? каковы ограничения динамических библиотек относительно обыкновенных исполняемых файлов.

Если неправильно поставил вопрос поправьте, !НЕ ФЛУДИТЕ! !НЕ ЗАНИМАЙТЕСЬ ТРОЛЛИНГОМ! !АФФТАРАМ рекомендуется воздержатся от ответа.

тебе бы сперва книжку почитать...

sn0w 11.08.2009 13:21

товарищи модеры, предлагаю такие темы сразу сносить или перекидывать в раздел для новичков, поскольку незная ничего и спрашивая о чемто конкретном подобные ТСы тока генерят кучу ненужных постов, среди которых довольно полезные темы просто тонут.

mr. ZetRikS 11.08.2009 13:58

доступно...
 
В DLL можно хранить помоему всё что угодно... dll ка это та же прога, только она сама не запускается, а ты её чем нить запускаешь (подгружаешь и юзаешь)...
Можно хранить наборы процедур/функций, файлы ресурсов (это уже по res файлам смотри), хранить эм... да всё... формы, картинки, курсоры, иконки...

На дельфи, как и помоему на других языках программирования с dll ками можно работать поразному, можно сразу весь набор подгрузить и все они будут хавать ресурсы системы, вне зависимости от того, юзается дллка или нет, или же можно подгружать все это дело динамически, что немного сложнее, но намного интереснее :)
Динамическая загрузка библиотек позволит использовать библиотеку тогда и только тогда, когда твоей проге что то от неё нужно, иначе она отключается, и лежит себе мёртвым грузом... :)

Кстати, не нашёл тут чб об этом сообщилось...
dll ка написанная на delphi 7 не подгрузится под RAD STUDIO 2009, в том же типо дельфи... и наоборот, если dll с тем же кодом откомпилировать на Rad Studio 2009 и попытаться подгрузить её в приложении откомпилированом в delphi 7, то она тупо не грузится...
Помнится пришлось оч сильно заморочится, перекомпилируя все библиотеки, которые нужно было подгрузить на Rad Studio 2009...

Так что имей в виду, что если накачаешься библиотек и будешь грузить их, то лучше искать с сорцами и все библиотеки перекомпилировать...

Попытался всё объяснить доступным языком... если что не понял, пиши...

dzumohu4 12.08.2009 17:31

Не я подгружаю через Lord Pe с указанием Оригинальной точки входа DllEntryPoint.
Насчёт ущербности темы, да может показаться что вопрос я задал ребяческий, насчёт сферы применения, !не спорьте мне лучше знать куда что совать!(Ясен перец что сигарету в рот но речь не об этом).

Гугля я находил лишь ответы вроде того какой красивый сыр, а вот конкретных примеров реализации на определённом языке - увы.

Хороший, развёрнутый ответ дал slesh, за что ему плюс к репе, show показал то насколько он не уважает меня лично и всех кто задаёт вопросы впринципе.Как ни странно на твоей репе show это никаким образом не отразится.
mr. ZetRikS рассказал про то какое "масло масляное" дал пару полезных советов, за что получает благодарность в виде + к репутации.
Всем адекватным спасибо.


Время: 04:20