Select the product you need help with
Что такое DLL?Код статьи: 815065 - Список продуктов, к которым относится данная статья. На этой страницеАннотацияВ данной статье описывается, что это библиотеки динамической компоновки (DLL) и различные проблемы, которые могут возникнуть при использовании библиотек DLL. Затем в этой статье некоторые дополнительные вопросы, которые следует учитывать при разработке собственных библиотек DLL. При описании какие библиотеки DLL, в данной статье описывается динамического связывания методов зависимости DLL точки входа библиотеки DLL, экспорт функции DLL и средства устранения неполадок библиотеки DLL. Данная статья завершается сравнением высокого уровня библиотек DLL со сборками Microsoft .NET Framework. ВВЕДЕНИЕДля операционных систем Microsoft Windows, перечисленных
в разделе «Относится к», большая часть функциональных возможностей операционной системы
обеспечивается с помощью библиотеки динамической компоновки (DLL). Кроме того, при запуске
программы в одной из этих операционных систем Windows, большая часть функциональных возможностей
Программа может предоставляться библиотеки DLL. Например некоторые программы могут содержать
содержится много различных модулей и каждый модуль программы и
распределенные в библиотеках DLL. Использование библиотек DLL способствует модульной из код, повторного использования кода, эффективный памяти и Уменьшение дискового пространства. Таким образом, Операционная система и программы загружаются быстрее работать быстрее и занять меньше места на диске на компьютере. Когда программа использует библиотеку DLL проблемы, называется зависимость может вызвать программу на выполнение. Когда программа использует DLL, создается зависимость. Если другая программа перезаписывает и это нарушает зависимость, исходной программы могут не успешно запущен. С Введение Microsoft платформа.NET Framework, у большинства проблем зависимости устранен с помощью сборок. Дополнительная информацияЧто такое DLL?DLL — это библиотека, которая содержит код и данные, которые могут использоваться несколько программ одновременно. Например в работе Windows системы, Comdlg32 DLL выполняет общее диалоговое окно поле связанных функций. Поэтому каждой программы можно использовать функцию, которая содержится в этой библиотеке DLL для реализации Открыть диалоговое окно. Это способствует повторному использованию кода эффективным использованием ресурсов и памяти.С помощью DLL-ФАЙЛ, программа может быть Благодаря модульности на отдельные компоненты. Например может быть бухгалтерскую программу Продано модулем. Каждый модуль может быть загружен в основной программе во время выполнения при Этот модуль установлен. Поскольку модули разделения, время загрузки Программа работает быстрее и модуль загружается только в том случае, когда функциональные возможности запрос. Кроме того обновления лучше подходят для применения в каждый модуль не влияя на другие части программы. Например, возможно, Программа заработной платы и налоговые ставки изменяться каждый год. Когда эти изменения являются изолированные с библиотекой DLL, можно применить обновление без необходимости создания или установки всей программы снова. В следующем списке описываются некоторые из файлы, которые реализованы в виде библиотеки DLL в операционных системах Windows:
Преимущества DLLНиже перечислены некоторые преимущества Когда программа использует библиотеку DLL при условии:
Зависимости библиотек DLLПри использовании функции DLL в другой библиотеке DLL программы или библиотеки DLL создается зависимость. Таким образом, программа является самостоятельным и программы могут возникнуть проблемы, если зависимость поврежден. Например, Программа может работать, если произойдет одно из следующих действий:
В следующем списке описываются изменения, которые были представленные в Microsoft Windows 2000 и более поздних операционных системах Windows для помочь свести к минимуму проблемы с зависимостями.
Средства устранения неполадок DLLОб устранении неполадок DLL доступны несколько средств. Следующие средства являются некоторые из этих средств.Dependency WalkerПросмотр Dependency Walker средство может рекурсивно для всех зависимых Библиотеки DLL, которые используются программой. При открытии программы в Dependency Walker Dependency Walker выполняет следующие проверки:
диск\Program Files\Microsoft visual Studio\Common\Tools Универсальный поиск решений проблем с DLLСредство DLL универсального решения проблемы (DUPS) используется для аудита, Сравнение документов и отображения сведений библиотеки DLL. В следующем списке описываются программы, которые составляют DUPS инструмента:
247957
(http://support.microsoft.com/kb/247957/
)
С помощью DUPS.exe для устранения проблем совместимости библиотек DLLРазработка DLLВ этом разделе описаны проблемы и требования, которые следует учитывать при разработке собственных библиотек DLL.Виды библиотек DLLПосле загрузки библиотеки DLL в приложении два способа связывания let можно вызвать экспортированных функций DLL. Эти два метода связывания во время загрузки Динамическая компоновка и динамической компоновкой во время выполнения.Динамическая компоновка во время загрузкиВ динамической компоновкой во время загрузки, приложение создает явные вызовы для экспортированных функций DLL как локальные функции. Использование динамической во время загрузки связывание, обеспечивают заголовка (.h) файла и библиотеки импорта (LIB) файла, когда вы компиляции и компоновки приложения. В этом случае компоновщик предоставит системе сведения, необходимые для загрузки библиотеки DLL и разрешения экспортируемые функции DLL мест во время загрузки.Динамическая компоновка во время выполненияВ динамической компоновкой во время выполнения, приложение вызывает функции LoadLibrary или функцию LoadLibraryEx для загрузки библиотеки DLL во время выполнения. После библиотеки DLL успешно загружено, используйте функцию GetProcAddress получить адрес экспортированной библиотеки DLL функции требуется вызвать. При использовании динамической компоновкой во время выполнения, не требуется Импортируйте файл библиотеки.В следующем списке описываются приложения критерии для использования динамической компоновкой во время загрузки и когда следует использовать во время выполнения Динамическая компоновка.
Точки входа библиотеки DLLПри создании библиотеки DLL можно указать точку входа функция. Функция точки входа вызывается в том случае, когда процессы или потоки присоединения сами по себе на библиотеку DLL или отсоединяется сами из библиотеки DLL. Можно использовать функция точки входа для инициализации структур данных или уничтожить данные структуры, необходимые библиотеки DLL. Кроме того Если приложение многопоточный можно использовать локальное хранилище потока (TLS) для выделения памяти, является закрытой для каждого потока в функцию точки входа. Следующий код: пример функции точки входа библиотеки DLL.Функция точки входа должны выполнять только простые задачи инициализации и не должны вызывать любую загрузку DLL или завершение функции. Например, в функцию точки входа, вы должны непосредственно не или косвенно вызовите функции LoadLibrary или LoadLibraryEx . Кроме того не следует вызывать функции FreeLibrary , когда процесс завершается. Примечание В многопоточных приложениях убедитесь в том что доступ к библиотеке DLL выполняется синхронизация глобальных данных (безопасный для потоков) во избежание повреждений данных. Для для этого, использовать протокол TLS для обеспечения уникальных данных для каждого потока. Экспорт функций DLLДля экспорта функций библиотеки DLL, можно добавить функцию ключевое слово Экспортированные библиотеки DLL функции или создание файла определения модуля (DEF), содержащий список экспортированных функций DLL.Чтобы использовать функции ключевое слово, Объявите каждой функции, которую требуется экспортировать следующее ключевое слово: __declspec(dllexport) Для использования в приложении, экспортированных функций DLL можно
необходимо объявить каждой функции, которую требуется импортировать следующие словом:__declspec(dllimport) Как правило используется один файл заголовка, который содержит определения инструкции и инструкции ifdef для разделения оператор экспорта и импорта
инструкция.Файл определения модуля также можно использовать для объявления экспортированных функций DLL. При использовании файла определения модуля, у вас для добавления ключевого слова function экспортированных функций DLL. В модуле файл определения объявляется и операторах ЭКСПОРТЫБИБЛИОТЕКИ для библиотеки DLL. Следующий код является примером файл определения. Пример DLL и приложенияВ Microsoft Visual C++ 6.0 можно создать библиотеку DLL, выбрав либо Библиотека динамической компоновки Win32 типа проекта или MFC с помощью (библиотеки dll) Тип проекта.Следующий код Пример библиотеки DLL, созданной в Visual C++ с помощью Библиотека динамической компоновки Win32 Тип проекта. В динамической компоновкой во время выполнения, используйте код, похожий на Следующий код для вызова SampleDLL.dll экспортированные функции DLL.
Платформа.NET Framework сборкиС появлением Microsoft .NET и платформа.NET Framework, Большинство проблем, связанных с DLL удалены использование сборок. Сборка представляет собой логическую единицу функциональности, работающей под контролем .NET common language runtime (CLR). Сборки физически существует файл .dll или .exe. Тем не менее внутренне сборка очень отличается от Microsoft Win32 DLL.Сборки файл содержит манифест сборки, метаданные типа, промежуточные Microsoft код языка (MSIL) и другие ресурсы. Манифест сборки содержит метаданные сборки, которая содержит все сведения, необходимые для сборки, с самоописанием. Следующая информация включена в манифест сборки:
В следующем списке описываются некоторые функции сборок по сравнению с возможностями библиотеки DLL Win32:
СсылкиДополнительные сведения о библиотеках DLL и платформа.NET Framework
сборки, посетите следующие веб-узлы корпорации Майкрософт: Конфликты DLL-Библиотек . http://msdn2.microsoft.com/en-us/library/ms811694.aspx
(http://msdn2.microsoft.com/en-us/library/ms811694.aspx)
Реализация компонента side-by-side, совместное использование приложений http://msdn2.Microsoft.com/en-us/library/ms811700.aspx
(http://msdn2.microsoft.com/en-us/library/ms811700.aspx)
Способ построения и обслуживания изолированных приложений и сборок side-by-side для Windows XP http://msdn2.Microsoft.com/en-us/library/ms997620.aspx
(http://msdn2.microsoft.com/en-us/library/ms997620.aspx)
Упрощение развертывания и устранения конфликтов DLL-Библиотек с платформа.NET Framework http://msdn2.Microsoft.com/en-US/NETFramework/aa497268.aspx
(http://msdn2.microsoft.com/en-us/netframework/aa497268.aspx)
Руководство разработчика платформа.NET Framework: сборки .aspx http://msdn2.Microsoft.com/en-us/library/hk5f40ct (vs.71)
(http://msdn2.microsoft.com/en-us/library/hk5f40ct(vs.71).aspx)
Динамическая компоновка во время выполнения http://msdn2.Microsoft.com/en-us/library/ms685090.aspx
(http://msdn2.microsoft.com/en-us/library/ms685090.aspx)
Локальное хранилище потока http://msdn2.Microsoft.com/en-us/library/ms686749.aspx
(http://msdn2.microsoft.com/en-us/library/ms686749.aspx)
СвойстваКод статьи: 815065 - Последнее изменение :: 29 апреля 2013 г. - Редакция: 14.0 Информация в данной статье относится к следующим продуктам.
Переведено с помощью машинного перевода ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода. Эта статья на английском языке: 815065
(http://support.microsoft.com/kb/815065/en-us/
)
| Переводы статьи
|




Перейти к началу страницы








