Пожалуйста, объясните основные понятия файла DLL и его регистрации в Windows

1464
Hennes

Что такое DLL? Что это делает на нашем компьютере? Почему нам нужно это зарегистрировать? Является ли регистрация DLL общим процессом одной команды? Это установлено / зарегистрировано, пока мы устанавливаем программное обеспечение?

7
Да, это законный, хотя и очень простой вопрос. Но нет ничего плохого в основных вопросах. 14 лет назад 5
У вас может быть вирус. Вы сделали полное сканирование? И что именно вы видите при регистрации? goblinbox 12 лет назад 0
Up проголосовал, потому что, хотя это основной вопрос, его я не знал ответа, и меня считают "IT-парень" в офисе Miller86 8 лет назад 0

5 ответов на вопрос

7
0xA3

DLL - это динамически подключаемые библиотеки:

Динамически подключаемая библиотека, или DLL, представляет собой реализацию Microsoft концепции общей библиотеки в операционных системах Microsoft Windows и OS / 2. Эти библиотеки обычно имеют расширение DLL, OCX (для библиотек, содержащих элементы управления ActiveX) или DRV (для устаревших системных драйверов).

Смотрите библиотеку динамических ссылок в Википедии.

4
Tobias Langner

DLL означает «Библиотека динамических ссылок». Как следует из названия, это набор функций (libray), который динамически связан с вашей программой во время выполнения (по сравнению со статическим связыванием). Вообще dll содержит только функцию. «Современные» .NET dll содержат обычные .NET объекты.

Dlls могут быть зарегистрированы. Этот процесс (например, regsvr32 N: \ ame.dll) делает эту DLL известной для операционной системы. В качестве альтернативы, DLL может быть размещена в том же каталоге, что и исполняемый файл или в каталоге в пути. Второй альтернативой является загрузка DLL через Windows API (LoadLibrary ()).

Обычная процедура - зарегистрировать dll во время установки или просто скопировать ее в тот же каталог, что и исполняемый файл.

3
Fredrik Mörk

DLL - это библиотека функций, которые могут использоваться другими программами. Не все DLL должны быть зарегистрированы, это относится только к тем, которые выставляют свою функциональность как COM- объекты.

Dll's могут прийти из многих мест; многие из них составляют Windows как таковые, другие входят в состав различного программного обеспечения, которое вы устанавливаете. Microsoft Office, например, регистрирует библиотеки DLL, которые предоставляют интерфейсы COM, что позволяет другим приложениям включать функции из приложений Office.

2
LawrenceC

Программа представляет собой серию инструкций. Обычно компьютер будет читать и выполнять инструкции один за другим последовательно.

Это замечательно, но большинство программ выполняют одну и ту же задачу в разное время или одну и ту же задачу с небольшими изменениями в разное время. Вместо того, чтобы переписывать инструкции этой задачи снова и снова, опция, доступная программистам, заключается в том, чтобы упаковать эти инструкции в подпрограмму или функцию .

Затем, вместо того, чтобы копировать инструкции снова и снова, вы говорите программе вызывать эту функцию и, следовательно, экономить место. Связывание связывает эту функцию со всеми местами, которые вызывают ее в программе, когда она собирается. Программу также легче обслуживать, поскольку, если вы хотите изменить эту задачу, вы можете изменить ее в одном месте, а не по всей программе.

Большинство программ имеют функции, которые используются в этой программе. Они являются частью этой программы, загружены вместе с ней и доступны только этой программе.

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

Вы можете упаковать функцию в определенный файл .dll, а затем сообщить вашей основной программе, которую хотите использовать, или импортировать функции из этого файла .dll.

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

0
Tim Scarborough

Давайте не будем забывать rundll32.exe. Эта утилита Windows позволяет вам вызывать функцию, экспортированную в DLL. http://support.microsoft.com/kb/164787