Dlldev32i dll что это

Обновлено: 02.07.2024

В этой статье описывается, что такое динамическая библиотека ссылок (DLL) и различные проблемы, которые могут возникнуть при использовании DLLs. В нем также описаны некоторые сложные проблемы, которые следует учитывать при разработке собственных DLLs.

Применяется к: Windows 10 — все выпуски
Исходный номер КБ: 815065

Сводка

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

Для Windows операционных систем большая часть функций операционной системы предоставляется DLL. Кроме того, при запуске программы на одной из Windows операционных систем большая часть функций программы может быть предоставлена DLLs. Например, некоторые программы могут содержать много различных модулей, и каждый модуль программы содержится и распространяется в DLLs.

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

Если программа использует DLL, проблема, называемая зависимостью, может привести к тому, что программа не будет работать. Когда программа использует DLL, создается зависимость. Если другая программа переописает и нарушает эту зависимость, оригинальная программа может не успешно выполниться.

Дополнительная информация

DLL — это библиотека, которая содержит код и данные, которые могут использоваться одновременно более чем одной программой. Например, в Windows операционных системах DLL Comdlg32 выполняет общие функции, связанные с диалоговое окно. Каждая программа может использовать функции, содержащиеся в этом DLL, для реализации открытого диалоговое окно. Это способствует повторному использованию кода и эффективному использованию памяти.

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

Кроме того, обновления легче применять к каждому модуле, не затрагивая другие части программы. Например, у вас может быть программа заработной платы, и налоговые ставки меняются каждый год. Если эти изменения изолированы в DLL, вы можете применить обновление, не нуждаясь в сборке или установке всей программы снова.

В следующем списке описываются некоторые файлы, реализованные как DLLs в Windows операционных системах:

ActiveX Файлы элементов управления (.ocx)

Пример управления ActiveX — это управление календарем, которое позволяет выбрать дату из календаря.

Файлы панели управления (.cpl)

Примером файла .cpl является элемент, расположенный в панели управления. Каждый элемент — это специализированная DLL.

Файлы драйвера устройства (drv)

Пример драйвера устройства — это драйвер принтера, который управляет печатью на принтере.

Преимущества DLL

В следующем списке описываются некоторые преимущества, которые предоставляются при помощи программы DLL:

Использует меньше ресурсов

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

Продвигает модульную архитектуру

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

Облегчает развертывание и установку

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

Зависимости от DLL

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

  • Зависимая DLL обновляется до новой версии.
  • Фиксирована зависимая DLL.
  • Зависимая DLL перезаписана более ранней версией.
  • Зависимая DLL удаляется с компьютера.

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

В следующем списке описываются изменения, внесенные в Windows 2000 г. и в более поздних Windows операционных системах, чтобы свести к минимуму проблемы зависимости:

Windows Защита файлов

В Windows защиты файлов операционная система предотвращает обновление или удаление системных DLLs несанкционированным агентом. Когда установка программы попытается удалить или обновить DLL, определяемую как система DLL, Windows файловой защиты будет искать допустимую цифровую подпись.

Частные DLLs позволяет изолировать программу от изменений, внесенных в общие DLLs. Частные DLLs используют сведения, определенные для версии, или пустой файл, чтобы обеспечить выполнение версии .local DLL, используемой программой. Чтобы использовать частные DLLs, найдите DLLs в корневой папке программы. Затем для новых программ добавьте сведения о версии в DLL. Для старых программ используйте пустой .local файл. Каждый метод сообщает операционной системе использовать частные DLLs, расположенные в корневой папке программы.

Средства устранения неполадок DLL

Для устранения неполадок DLL доступны несколько средств. Вот некоторые из этих средств.

Уокер зависимостей

Средство Уокер зависимостей может повторно сканировать все зависимые DLLs, используемые программой. При открываемой программе в "Уолкер зависимостей" уолкер зависимостей делает следующие проверки:

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

С помощью Уолкера зависимостей можно документировать все DLLs, которые использует программа. Это может помочь предотвратить и устранить проблемы DLL, которые могут возникнуть в будущем. В следующем каталоге при установке Visual Studio 6.0 расположено приложение Dependency Walker.

drive\Program Files\Microsoft Visual Studio\Common\Tools

Универсальное решение проблем DLL

Средство универсального решения проблем DLL (DUPS) используется для аудита, сравнения, документа и отображения данных DLL. В следующем списке описываются утилиты, которые составляют средство DUPS:

Эта утилита регистрирует все DLLs на компьютере и регистрирует сведения в текстовом файле или файле базы данных.

Эта утилита сравнивает DLLs, перечисленные в двух текстовых файлах, и создает третий текстовый файл, содержащий различия.

Эта утилита загружает текстовые файлы, созданные с помощью Dlister.exe и Dcomp.exe в базу данных dllHell.

Эта утилита предоставляет графический пользовательский интерфейс (GUI) версии Dtxt2DB.exe утилиты.

База данных справки DLL

База данных справки по DLL поможет вам найти конкретные версии DLLs, установленные программным обеспечением Майкрософт.

Разработка DLL

В этом разделе описываются проблемы и требования, которые следует учитывать при разработке собственных DLLs.

Типы DLLs

При загрузке DLL в приложении два метода связывания разрешат вызывать экспортируемую функцию DLL. Два метода связывания — динамическая привязка во время нагрузки и динамическая связь во время работы.

Динамическая привязка по времени нагрузки

В динамической привязке времени нагрузки приложение делает явные вызовы для экспортируемой DLL-функций, таких как локальные функции. Чтобы использовать динамическое связывание во время нагрузки, при компиляции и ссылке приложения предостережете файл (.h) и файл импортной библиотеки (.lib). При этом linker предоставит системе сведения, необходимые для загрузки DLL и решения экспортируемой точки функции DLL во время нагрузки.

Динамическая привязка по времени

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

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

Если важна начальная производительность запуска приложения, необходимо использовать динамическую привязку к времени выполнения.

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

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

Точка входа в DLL

При создании DLL можно дополнительно указать функцию точки входа. Функция точки входа называется, когда процессы или потоки присоединяются к DLL или отсоединяются от DLL. Функцию точки входа можно использовать для инициализации структур данных или для уничтожения структур данных, как того требует DLL. Кроме того, если приложение многопоточное, можно использовать локальное хранилище потоков (TLS) для выделения памяти, которая является закрытой для каждого потока в функции точки входа. Следующий код является примером функции точки входа DLL.

Когда функция точки входа возвращает значение FALSE, приложение не будет запускаться, если вы используете динамическую привязку по времени нагрузки. Если используется динамическая привязка по времени запуска, загрузка только отдельной DLL не будет.

Функция точки входа должна выполнять только простые задачи инициализации и не должна вызывать другие функции загрузки или завершения DLL. Например, в функции точки входа не следует прямо или косвенно вызывать функцию LoadLibrary или LoadLibraryEx функцию. Кроме того, не следует вызывать FreeLibrary функцию, когда процесс завершается.

В многопотоковых приложениях убедитесь, что доступ к глобальным данным DLL синхронизирован (безопасный поток), чтобы избежать возможного повреждения данных. Для этого используйте TLS для предоставления уникальных данных для каждого потока.

Экспорт функций DLL

Чтобы экспортировать функции DLL, можно добавить ключевое слово функции в экспортируемую функцию DLL или создать файл определения модуля (.def), в который перечислены экспортные функции DLL.

Чтобы использовать ключевое слово функции, необходимо объявить каждую функцию, которую необходимо экспортировать со следующим ключевым словом:
__declspec(dllexport)

Чтобы использовать экспортируемые функции DLL в приложении, необходимо объявить каждую функцию, которую необходимо импортировать по следующему ключевому слову: __declspec(dllimport)

Как правило, для раздельного экспортного утверждения и утверждения используется один файл загона, в который имеется определенное заявление и ifdef import заявление.

Вы также можете использовать файл определения модуля для объявления экспортных функций DLL. При использовании файла определения модуля не нужно добавлять ключевое слово функции к экспортируемой функции DLL. В файле определения модуля объявляется заявление и LIBRARY EXPORTS утверждение для DLL. Следующий код — пример файла определения.

Пример DLL и приложения

В Visual C++ 6.0 можно создать DLL, выбрав тип проекта Win32 Dynamic-Link Library или тип MFC AppWizard (dll).

Следующий код — пример DLL, созданного в Visual C++ с помощью типа проекта Win32 Dynamic-Link Library.

Следующий код — пример проекта приложения Win32, который вызывает экспортируемую функцию DLL в DLL SampleDLL.

При динамической привязке во время нагрузки необходимо связать импортную библиотеку SampleDLL.lib, созданную при создании проекта SampleDLL.

При динамической привязке во время работы используется код, аналогичный следующему коду, для вызова SampleDLL.dll экспортируемой функции DLL.

При компиляции и ссылке приложения SampleDLL операционная Windows ищет DLL SampleDLL в следующих расположениях в этом порядке:

Папка Windows системы

Функция GetSystemDirectory возвращает путь к папке Windows системы.

Функция GetWindowsDirectory возвращает путь Windows папки.

Файл сборки содержит манифест сборки, метаданные типа, код промежуточного языка Microsoft (MSIL) и другие ресурсы. Манифест сборки содержит метаданные сборки, которые предоставляют всю информацию, необходимую для самостоятельного описания сборки. В манифест сборки включены следующие сведения:

  • Имя сборки
  • Сведения о версии
  • Сведения о культуре
  • Информация о сильных именах
  • Список файлов сборки
  • Тип справочной информации
  • Справочные и зависящие сведения о сборке

Код MSIL, содержащийся в сборке, не может выполняться напрямую. Вместо этого выполнение кода MSIL управляется с помощью CLR. По умолчанию при создании сборки сборка является закрытой для приложения. Для создания общей сборки необходимо назначить сборке сильное имя, а затем опубликовать сборку в кэше глобальной сборки.

В следующем списке описываются некоторые функции сборки по сравнению с функциями DLLs Win32:

При создании сборки в манифесте сборки содержатся все сведения, необходимые clR для запуска сборки. Манифест сборки содержит список зависимых сборок. Таким образом, CLR может поддерживать согласованный набор сборок, используемых в приложении. В DLL Win32 невозможно поддерживать согласованность между набором DLLs, используемыми в приложении при использовании общих DLLs.

В манифесте сборки сведения о версиях записываются и применяются clR. Кроме того, политики версий могут обеспечить применение использования для конкретной версии. В DLL Win32 версия не может применяться операционной системой. Необходимо убедиться, что DLLs совместимы с обратной совместимость.

Развертывание бок о бок

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

Самостоятельное сдерживание и изоляция

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

Сборка запускается под разрешениями безопасности, которые поставляются в манифесте сборки и контролируются clR.

Файл dlldev32i.dll из ( является частью DLLDEV32i. dlldev32i.dll, расположенный в e: \WINDOWS \system32 \ с размером файла 120200 байт, версия файла 3, 7, 0, 0, подпись 69CDB570D23DF62C9913B845FA7D7998.

  1. Запустите приложение Asmwsoft Pc Optimizer.
  2. Потом из главного окна выберите пункт "Clean Junk Files".
  3. Когда появится новое окно, нажмите на кнопку "start" и дождитесь окончания поиска.
  4. потом нажмите на кнопку "Select All".
  5. нажмите на кнопку "start cleaning".

Clean Registry to fix dlldev32i.dll has stopped working error

  1. Запустите приложение Asmwsoft Pc Optimizer.
  2. Потом из главного окна выберите пункт "Fix Registry problems".
  3. Нажмите на кнопку "select all" для проверки всех разделов реестра на наличие ошибок.
  4. 4. Нажмите на кнопку "Start" и подождите несколько минут в зависимости от размера файла реестра.
  5. После завершения поиска нажмите на кнопку "select all".
  6. Нажмите на кнопку "Fix selected".
    P.S. Вам может потребоваться повторно выполнить эти шаги.

3- Настройка Windows для исправления критических ошибок dlldev32i.dll:

Clean Registry to fix dlldev32i.dll has stopped working error

  1. Нажмите правой кнопкой мыши на «Мой компьютер» на рабочем столе и выберите пункт «Свойства».
  2. В меню слева выберите " Advanced system settings".
  3. В разделе «Быстродействие» нажмите на кнопку «Параметры».
  4. Нажмите на вкладку "data Execution prevention".
  5. Выберите опцию " Turn on DEP for all programs and services . " .
  6. Нажмите на кнопку "add" и выберите файл dlldev32i.dll, а затем нажмите на кнопку "open".
  7. Нажмите на кнопку "ok" и перезагрузите свой компьютер.
Как другие пользователи поступают с этим файлом?

Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.

Пользователи часто недоумевают, потому что программы, которые только недавно работали, не запускаются. Например, были запущены Photoshop и Skype, но теперь появляется ошибка "Программа не запускается, потому что dlldev32.dll отсутствует на вашем компьютере.

Что мне делать? Как мне ее вернуть? Как и где скачать dlldev32.dll и куда ее положить? Ответы на все ваши вопросы здесь!

Что такое dlldev32.dll?

"Dlldev32.dll пропущена" - это достаточно стандартная ошибка на Windows PC. Чаще всего проблема заключается в установке обновления Windows и неудачной установке некоторой программы.:

A .dll файл (Dynamic Link Library) функционирует, когда конкретной программе нужен этот .dll файл. Если он поврежден/пропущен, пользователи видят, например, ошибку dlldev32.dll, которая приводит к аварийному завершению работы. Стоит добавить, что dlldev32.dll - это файл, используемый в дистрибутиве Visual C++ Redistributable для Visual Studio 2015.:

При появлении уведомления о пропущенном файле пользователи начинают поиск загрузки dlldev32.dll. Лучше делать это в проверенном месте, например на сайте DLL Kit, где нет ни угроз, ни вирусов.:

Самые распространенные ошибки с dlldev32.dll файлом на Windows

  • :Файл Dll удален/поврежден. Основная причина - удален или поврежден важный для приложения .dll файл. Вам необходимо восстановить файл или скачать его еще раз.
  • Ошибка в облаке Adobe. Проблема вызвана поломкой Visual C ++.
  • Файлы Visual Studio 2015 повреждены/пропущены. Файл .dll отсутствует на компьютере или поврежден приложением/системой/вирусом.
  • Система ПК заражена вирусами. Вредоносные программы и вирусы всегда повреждают файл dlldev32.dll.
  • В нем повреждены системные файлы. Ошибки и повреждения возникают после некорректной перезагрузки Windows и работы с зараженными программами и приложениями.

Другие распространенные Dlldev32.dll ошибки включают:

  • “Dlldev32.dll пропущена“
  • “Dlldev32.dll ошибка загрузки“
  • “Dlldev32.dll крах“
  • “Dlldev32.dll не найдена“
  • “Dlldev32.dll не удалось обнаружить“
  • “Dlldev32.dll Нарушение Доступа“
  • “Точка входа в процедуру Dlldev32.dll error“
  • “Не получается найти Dlldev32.dll“
  • “Не могу зарегистрировать Dlldev32.dll“

метод 1: Загрузить dlldev32.dll автоматически

Не знаете, какая версия dlldev32.dll вам нужна? Не волнуйтесь; используйте автоматический метод для решения проблемы или просто прочитайте статью ниже.

Для этого метода скачайте dlldev32.dll по нашей ссылке и используйте командную строку, чтобы зарегистрировать отсутствующую dlldev32.dll:

  • Одновременно нажмите клавиши Windows и R на клавиатуре - появится окно Run - введите cmd - нажмите Ctrl+Shift+Enter - перед вами появится командная строка с правами администратора.
  • Когда появится запрос, необходимо разрешить командной строке вносить изменения, поэтому нажмите Yes.
  • Теперь удалите файл реестра (введите или скопируйте команду regsvr32 /u dlldev32.dll, а затем нажмите Enter).
  • Теперь зарегистрируйте файл: введите команду regsvr32 dlldev32.dll и нажмите Enter.
  • Закрыть командную строку и запустить приложение.

DLLDEV32.DLL ВЕРСИИ

Какая версия dlldev32.dll правильная?

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

Where should you place dlldev32.dll?

Ошибка "dlldev32.dll пропущена" будет исправлена, если переместить файл в папку установки приложения или игры. Также можно переместить dlldev32.dll в системный каталог Windows.

Если этот метод не помогает, используйте следующий.

метод 3: Переустановить Visual C++ Redistributable for Visual Studio 2015

Мы рекомендуем переустановить переустановку дистрибутива Visual C++ для Visual Studio 2015. Пожалуйста, придерживайтесь рекомендаций Microsoft по правильной установке отсутствующих файлов.

Рекомендуется скачать программу с официального сайта Microsoft:

  • Вам необходимо скачать Microsoft Visual C++ Redistributable с официального сайта Microsoft.
  • Выберите файл для вашей версии Windows: vc_redist.x64.exe для 64-битной версии или vc_redist.x86.exe для 32-битной операционной системы. Установите флажок рядом с файлом и нажмите кнопку Next.
  • Открыть файл - прочитать условия лицензирования программного обеспечения Майкрософт - согласиться - выбрать пункт Установить.

Если этот метод не помогает, используйте следующий.

Список некоторых исполняемых файлов библиотеки Visual C++

  • mfc140u.dll
  • mfcm140.dll
  • mfcm140u.dll
  • mfc140chs.dll
  • mfc140cht.dll
  • ucrtbase.dll
  • vcruntime140.dll
  • msvcp140.dll
  • concrt140.dll
  • vccorlib140.dll
  • vcamp140.dll

Вот некоторые решения по исправлению ошибки "dlldev32.dll is Missing". Пожалуйста, прочитайте все инструкции и следуйте им, чтобы успешно добавить конкретную версию файла .dll в Windows для восстановления dlldev32.dll проблемы.

метод 4: Запустить SFC сканирование (System File Checker)

Проверка системных файлов (SFC scan) - инструмент, доступный в Windows. Устройство считается самым быстрым способом автоматического исправления поврежденных системных файлов. Для запуска необходимо запустить его:

Если этот метод не помогает, используйте следующий.

метод 5: Обновить Windows до последней версии

Даже простое обновление Windows может помочь решить эту проблему. Обновляя операционную систему до последней версии, все ошибки dlldev32.dll могут исчезнуть:

  • Открыть настройки из меню Пуск или с помощью комбинации клавиш Windows+I.
  • Перейти к обновлению и безопасности.
  • В закладке Windows Update нажмите Check for updates.
  • Новое обновление найдено - Установить сейчас.

Если этот метод не помогает, используйте следующий.

метод 6: Переустановить нужное приложение

Когда ни один из методов не может помочь, окончательным решением может быть переустановка приложения после его полной деинсталляции:

  • Перейти в Settings с помощью меню Start или нажатием Windows+I.
  • Click on Apps.
  • Найти нужное проблемное приложение - щелкните по нему один раз - в его настройках, выберите опцию Uninstall и продолжайте следовать продемонстрированным инструкциям.
  • Перезагрузите программу и переустановите ее из проверенного источника.

Если этот метод не помогает, используйте следующий.

Выводы

В этой статье описывается, что такое динамическая библиотека ссылок (DLL) и различные проблемы, которые могут возникнуть при использовании DLLs. В нем также описаны некоторые сложные проблемы, которые следует учитывать при разработке собственных DLLs.

Применяется к: Windows 10 — все выпуски
Исходный номер КБ: 815065

Сводка

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

Для Windows операционных систем большая часть функций операционной системы предоставляется DLL. Кроме того, при запуске программы на одной из Windows операционных систем большая часть функций программы может быть предоставлена DLLs. Например, некоторые программы могут содержать много различных модулей, и каждый модуль программы содержится и распространяется в DLLs.

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

Если программа использует DLL, проблема, называемая зависимостью, может привести к тому, что программа не будет работать. Когда программа использует DLL, создается зависимость. Если другая программа переописает и нарушает эту зависимость, оригинальная программа может не успешно выполниться.

Дополнительная информация

DLL — это библиотека, которая содержит код и данные, которые могут использоваться одновременно более чем одной программой. Например, в Windows операционных системах DLL Comdlg32 выполняет общие функции, связанные с диалоговое окно. Каждая программа может использовать функции, содержащиеся в этом DLL, для реализации открытого диалоговое окно. Это способствует повторному использованию кода и эффективному использованию памяти.

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

Кроме того, обновления легче применять к каждому модуле, не затрагивая другие части программы. Например, у вас может быть программа заработной платы, и налоговые ставки меняются каждый год. Если эти изменения изолированы в DLL, вы можете применить обновление, не нуждаясь в сборке или установке всей программы снова.

В следующем списке описываются некоторые файлы, реализованные как DLLs в Windows операционных системах:

ActiveX Файлы элементов управления (.ocx)

Пример управления ActiveX — это управление календарем, которое позволяет выбрать дату из календаря.

Файлы панели управления (.cpl)

Примером файла .cpl является элемент, расположенный в панели управления. Каждый элемент — это специализированная DLL.

Файлы драйвера устройства (drv)

Пример драйвера устройства — это драйвер принтера, который управляет печатью на принтере.

Преимущества DLL

В следующем списке описываются некоторые преимущества, которые предоставляются при помощи программы DLL:

Использует меньше ресурсов

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

Продвигает модульную архитектуру

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

Облегчает развертывание и установку

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

Зависимости от DLL

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

  • Зависимая DLL обновляется до новой версии.
  • Фиксирована зависимая DLL.
  • Зависимая DLL перезаписана более ранней версией.
  • Зависимая DLL удаляется с компьютера.

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

В следующем списке описываются изменения, внесенные в Windows 2000 г. и в более поздних Windows операционных системах, чтобы свести к минимуму проблемы зависимости:

Windows Защита файлов

В Windows защиты файлов операционная система предотвращает обновление или удаление системных DLLs несанкционированным агентом. Когда установка программы попытается удалить или обновить DLL, определяемую как система DLL, Windows файловой защиты будет искать допустимую цифровую подпись.

Частные DLLs позволяет изолировать программу от изменений, внесенных в общие DLLs. Частные DLLs используют сведения, определенные для версии, или пустой файл, чтобы обеспечить выполнение версии .local DLL, используемой программой. Чтобы использовать частные DLLs, найдите DLLs в корневой папке программы. Затем для новых программ добавьте сведения о версии в DLL. Для старых программ используйте пустой .local файл. Каждый метод сообщает операционной системе использовать частные DLLs, расположенные в корневой папке программы.

Средства устранения неполадок DLL

Для устранения неполадок DLL доступны несколько средств. Вот некоторые из этих средств.

Уокер зависимостей

Средство Уокер зависимостей может повторно сканировать все зависимые DLLs, используемые программой. При открываемой программе в "Уолкер зависимостей" уолкер зависимостей делает следующие проверки:

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

С помощью Уолкера зависимостей можно документировать все DLLs, которые использует программа. Это может помочь предотвратить и устранить проблемы DLL, которые могут возникнуть в будущем. В следующем каталоге при установке Visual Studio 6.0 расположено приложение Dependency Walker.

drive\Program Files\Microsoft Visual Studio\Common\Tools

Универсальное решение проблем DLL

Средство универсального решения проблем DLL (DUPS) используется для аудита, сравнения, документа и отображения данных DLL. В следующем списке описываются утилиты, которые составляют средство DUPS:

Эта утилита регистрирует все DLLs на компьютере и регистрирует сведения в текстовом файле или файле базы данных.

Эта утилита сравнивает DLLs, перечисленные в двух текстовых файлах, и создает третий текстовый файл, содержащий различия.

Эта утилита загружает текстовые файлы, созданные с помощью Dlister.exe и Dcomp.exe в базу данных dllHell.

Эта утилита предоставляет графический пользовательский интерфейс (GUI) версии Dtxt2DB.exe утилиты.

База данных справки DLL

База данных справки по DLL поможет вам найти конкретные версии DLLs, установленные программным обеспечением Майкрософт.

Разработка DLL

В этом разделе описываются проблемы и требования, которые следует учитывать при разработке собственных DLLs.

Типы DLLs

При загрузке DLL в приложении два метода связывания разрешат вызывать экспортируемую функцию DLL. Два метода связывания — динамическая привязка во время нагрузки и динамическая связь во время работы.

Динамическая привязка по времени нагрузки

В динамической привязке времени нагрузки приложение делает явные вызовы для экспортируемой DLL-функций, таких как локальные функции. Чтобы использовать динамическое связывание во время нагрузки, при компиляции и ссылке приложения предостережете файл (.h) и файл импортной библиотеки (.lib). При этом linker предоставит системе сведения, необходимые для загрузки DLL и решения экспортируемой точки функции DLL во время нагрузки.

Динамическая привязка по времени

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

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

Если важна начальная производительность запуска приложения, необходимо использовать динамическую привязку к времени выполнения.

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

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

Точка входа в DLL

При создании DLL можно дополнительно указать функцию точки входа. Функция точки входа называется, когда процессы или потоки присоединяются к DLL или отсоединяются от DLL. Функцию точки входа можно использовать для инициализации структур данных или для уничтожения структур данных, как того требует DLL. Кроме того, если приложение многопоточное, можно использовать локальное хранилище потоков (TLS) для выделения памяти, которая является закрытой для каждого потока в функции точки входа. Следующий код является примером функции точки входа DLL.

Когда функция точки входа возвращает значение FALSE, приложение не будет запускаться, если вы используете динамическую привязку по времени нагрузки. Если используется динамическая привязка по времени запуска, загрузка только отдельной DLL не будет.

Функция точки входа должна выполнять только простые задачи инициализации и не должна вызывать другие функции загрузки или завершения DLL. Например, в функции точки входа не следует прямо или косвенно вызывать функцию LoadLibrary или LoadLibraryEx функцию. Кроме того, не следует вызывать FreeLibrary функцию, когда процесс завершается.

В многопотоковых приложениях убедитесь, что доступ к глобальным данным DLL синхронизирован (безопасный поток), чтобы избежать возможного повреждения данных. Для этого используйте TLS для предоставления уникальных данных для каждого потока.

Экспорт функций DLL

Чтобы экспортировать функции DLL, можно добавить ключевое слово функции в экспортируемую функцию DLL или создать файл определения модуля (.def), в который перечислены экспортные функции DLL.

Чтобы использовать ключевое слово функции, необходимо объявить каждую функцию, которую необходимо экспортировать со следующим ключевым словом:
__declspec(dllexport)

Чтобы использовать экспортируемые функции DLL в приложении, необходимо объявить каждую функцию, которую необходимо импортировать по следующему ключевому слову: __declspec(dllimport)

Как правило, для раздельного экспортного утверждения и утверждения используется один файл загона, в который имеется определенное заявление и ifdef import заявление.

Вы также можете использовать файл определения модуля для объявления экспортных функций DLL. При использовании файла определения модуля не нужно добавлять ключевое слово функции к экспортируемой функции DLL. В файле определения модуля объявляется заявление и LIBRARY EXPORTS утверждение для DLL. Следующий код — пример файла определения.

Пример DLL и приложения

В Visual C++ 6.0 можно создать DLL, выбрав тип проекта Win32 Dynamic-Link Library или тип MFC AppWizard (dll).

Следующий код — пример DLL, созданного в Visual C++ с помощью типа проекта Win32 Dynamic-Link Library.

Следующий код — пример проекта приложения Win32, который вызывает экспортируемую функцию DLL в DLL SampleDLL.

При динамической привязке во время нагрузки необходимо связать импортную библиотеку SampleDLL.lib, созданную при создании проекта SampleDLL.

При динамической привязке во время работы используется код, аналогичный следующему коду, для вызова SampleDLL.dll экспортируемой функции DLL.

При компиляции и ссылке приложения SampleDLL операционная Windows ищет DLL SampleDLL в следующих расположениях в этом порядке:

Папка Windows системы

Функция GetSystemDirectory возвращает путь к папке Windows системы.

Функция GetWindowsDirectory возвращает путь Windows папки.

Файл сборки содержит манифест сборки, метаданные типа, код промежуточного языка Microsoft (MSIL) и другие ресурсы. Манифест сборки содержит метаданные сборки, которые предоставляют всю информацию, необходимую для самостоятельного описания сборки. В манифест сборки включены следующие сведения:

  • Имя сборки
  • Сведения о версии
  • Сведения о культуре
  • Информация о сильных именах
  • Список файлов сборки
  • Тип справочной информации
  • Справочные и зависящие сведения о сборке

Код MSIL, содержащийся в сборке, не может выполняться напрямую. Вместо этого выполнение кода MSIL управляется с помощью CLR. По умолчанию при создании сборки сборка является закрытой для приложения. Для создания общей сборки необходимо назначить сборке сильное имя, а затем опубликовать сборку в кэше глобальной сборки.

В следующем списке описываются некоторые функции сборки по сравнению с функциями DLLs Win32:

При создании сборки в манифесте сборки содержатся все сведения, необходимые clR для запуска сборки. Манифест сборки содержит список зависимых сборок. Таким образом, CLR может поддерживать согласованный набор сборок, используемых в приложении. В DLL Win32 невозможно поддерживать согласованность между набором DLLs, используемыми в приложении при использовании общих DLLs.

В манифесте сборки сведения о версиях записываются и применяются clR. Кроме того, политики версий могут обеспечить применение использования для конкретной версии. В DLL Win32 версия не может применяться операционной системой. Необходимо убедиться, что DLLs совместимы с обратной совместимость.

Развертывание бок о бок

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

Самостоятельное сдерживание и изоляция

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

Сборка запускается под разрешениями безопасности, которые поставляются в манифесте сборки и контролируются clR.

Читайте также: