
10.08.2009, 15:34
|
|
Новичок
Регистрация: 09.09.2008
Сообщений: 12
Провел на форуме: 26673
Репутация:
16
|
|
Сообщение от 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, поскольку я не имею доступа к исходному коду приложения.
Спасибо за ответы(Троль Изыйди!!!)))
|
|
|