Возможности Динамических библиотек в Delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by dzumohu4, 10 Aug 2009.

  1. dzumohu4

    dzumohu4 New Member

    Joined:
    9 Sep 2008
    Messages:
    11
    Likes Received:
    4
    Reputations:
    0
    Нужны ответы на следующие вопросы:
    Во первых. - что можно сделать в .dll каким функционалом можно обеспечить?
    Во вторых - поддерживают .dll ли написанные на delphi различные компоненты этой же среды разработки например работы с сетевыми протоколами?
    Что мне нужно:мне нужно чтобы .dll распаковывалась а затем подгружалась из некоторой программы, и выполняла функции мониторинга системы, с реализацией клиента серверной технологии.
    Возможно ли такое? каковы ограничения динамических библиотек относительно обыкновенных исполняемых файлов.

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

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    никаких особых ограничений нет. все что перечислил - возможно
     
    1 person likes this.
  3. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Я Тролль.
    Вообще все, что спросил читается по первым спискам выдачи гугла...
    Так что это тупость...
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вообще в 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 а не весь проект.
     
    2 people like this.
  5. dzumohu4

    dzumohu4 New Member

    Joined:
    9 Sep 2008
    Messages:
    11
    Likes Received:
    4
    Reputations:
    0
    Моя идея заключается в том что !Весь! функционал заключается именно в .dll, поскольку я не имею доступа к исходному коду приложения.

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

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,309
    Reputations:
    327
    тебе бы сперва книжку почитать...
     
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,309
    Reputations:
    327
    товарищи модеры, предлагаю такие темы сразу сносить или перекидывать в раздел для новичков, поскольку незная ничего и спрашивая о чемто конкретном подобные ТСы тока генерят кучу ненужных постов, среди которых довольно полезные темы просто тонут.
     
  8. mr. ZetRikS

    mr. ZetRikS New Member

    Joined:
    17 Jul 2009
    Messages:
    45
    Likes Received:
    2
    Reputations:
    0
    доступно...

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

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

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

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

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

    dzumohu4 New Member

    Joined:
    9 Sep 2008
    Messages:
    11
    Likes Received:
    4
    Reputations:
    0
    Не я подгружаю через Lord Pe с указанием Оригинальной точки входа DllEntryPoint.
    Насчёт ущербности темы, да может показаться что вопрос я задал ребяческий, насчёт сферы применения, !не спорьте мне лучше знать куда что совать!(Ясен перец что сигарету в рот но речь не об этом).

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

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