Что такое DLL?
DLL-файлы - это двоичные файлы, которые могут содержать исполняемый код и ресурсы, такие как изображения и т. Д. В отличие от приложений, они не могут быть выполнены напрямую, но приложение будет загружать их по мере необходимости (или все сразу во время запуска).
Они важны?
Большинство приложений загружают нужные им DLL-файлы при запуске. Если какой-либо из них не найден, система вообще не сможет запустить процесс.
Для файлов DLL могут потребоваться другие файлы DLL
Точно так же, как для приложения требуется файл DLL, файл DLL может зависеть от других файлов DLL. Если один из этих файлов DLL в цепочке зависимостей не найден, приложение не загрузится. Это легко отлаживается с помощью любых инструментов обхода зависимостей, таких как Dependency Walker .
В системных папках их так много
Большая часть функций системы предоставляется пользовательской программе в виде файлов DLL, поскольку они являются стандартной формой совместного использования кода / ресурсов. Каждая функция хранится отдельно в разных DLL-файлах, так что будут загружены только необходимые DLL-файлы, что уменьшит ограничения памяти в системе.
Установленные приложения также используют файлы DLL
DLL-файлы также становятся формой физического разделения функций, как описано выше. Хорошие приложения также стараются не загружать файлы DLL, пока они не потребуются, что снижает требования к памяти. Это также приводит к тому, что приложения поставляются с большим количеством DLL-файлов.
DLL Hell
Однако при обновлении системы иногда происходит сбой других программ, когда существует несоответствие версий между общими файлами DLL и программой, которая требует их. Системные контрольные точки, DLL-кеш и т. Д. Были инициативой M $ для решения этой проблемы. Платформа .NET может вообще не сталкиваться с этой проблемой.
Как мы узнаем, что находится внутри DLL-файла?
Вы должны использовать внешний инструмент, такой как DUMPBIN или Dependency Walker, который будет не только показывать, какие общедоступные функции (известные как экспорты) содержатся внутри файлов DLL, а также какие другие файлы DLL ему требуются, и который экспортирует из тех файлов DLL, от которых зависит этот файл DLL.
Как мы их создаем / используем?
Обратитесь к документации по программированию от вашего поставщика. Для C ++, обратитесь к LoadLibrary в MSDN.