Нужны ответы на следующие вопросы: Во первых. - что можно сделать в .dll каким функционалом можно обеспечить? Во вторых - поддерживают .dll ли написанные на delphi различные компоненты этой же среды разработки например работы с сетевыми протоколами? Что мне нужно:мне нужно чтобы .dll распаковывалась а затем подгружалась из некоторой программы, и выполняла функции мониторинга системы, с реализацией клиента серверной технологии. Возможно ли такое? каковы ограничения динамических библиотек относительно обыкновенных исполняемых файлов. Если неправильно поставил вопрос поправьте, !НЕ ФЛУДИТЕ! !НЕ ЗАНИМАЙТЕСЬ ТРОЛЛИНГОМ! !АФФТАРАМ рекомендуется воздержатся от ответа.
Вообще в 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, поскольку я не имею доступа к исходному коду приложения. Спасибо за ответы(Троль Изыйди!!!)))
товарищи модеры, предлагаю такие темы сразу сносить или перекидывать в раздел для новичков, поскольку незная ничего и спрашивая о чемто конкретном подобные ТСы тока генерят кучу ненужных постов, среди которых довольно полезные темы просто тонут.
доступно... В DLL можно хранить помоему всё что угодно... dll ка это та же прога, только она сама не запускается, а ты её чем нить запускаешь (подгружаешь и юзаешь)... Можно хранить наборы процедур/функций, файлы ресурсов (это уже по res файлам смотри), хранить эм... да всё... формы, картинки, курсоры, иконки... На дельфи, как и помоему на других языках программирования с dll ками можно работать поразному, можно сразу весь набор подгрузить и все они будут хавать ресурсы системы, вне зависимости от того, юзается дллка или нет, или же можно подгружать все это дело динамически, что немного сложнее, но намного интереснее Динамическая загрузка библиотек позволит использовать библиотеку тогда и только тогда, когда твоей проге что то от неё нужно, иначе она отключается, и лежит себе мёртвым грузом... Кстати, не нашёл тут чб об этом сообщилось... dll ка написанная на delphi 7 не подгрузится под RAD STUDIO 2009, в том же типо дельфи... и наоборот, если dll с тем же кодом откомпилировать на Rad Studio 2009 и попытаться подгрузить её в приложении откомпилированом в delphi 7, то она тупо не грузится... Помнится пришлось оч сильно заморочится, перекомпилируя все библиотеки, которые нужно было подгрузить на Rad Studio 2009... Так что имей в виду, что если накачаешься библиотек и будешь грузить их, то лучше искать с сорцами и все библиотеки перекомпилировать... Попытался всё объяснить доступным языком... если что не понял, пиши...
Не я подгружаю через Lord Pe с указанием Оригинальной точки входа DllEntryPoint. Насчёт ущербности темы, да может показаться что вопрос я задал ребяческий, насчёт сферы применения, !не спорьте мне лучше знать куда что совать!(Ясен перец что сигарету в рот но речь не об этом). Гугля я находил лишь ответы вроде того какой красивый сыр, а вот конкретных примеров реализации на определённом языке - увы. Хороший, развёрнутый ответ дал slesh, за что ему плюс к репе, show показал то насколько он не уважает меня лично и всех кто задаёт вопросы впринципе.Как ни странно на твоей репе show это никаким образом не отразится. mr. ZetRikS рассказал про то какое "масло масляное" дал пару полезных советов, за что получает благодарность в виде + к репутации. Всем адекватным спасибо.