Меню

Как установить common dll

Что такое библиотека DLL

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

Исходная версия продукта: Windows 10 — все выпуски
Исходный номер статьи базы знаний: 815065

Аннотация

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

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

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

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

Дополнительные сведения

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

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

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

Файлы элементов ActiveX (ocx)

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

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

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

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

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

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

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

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

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

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

Простота развертывания и установки

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

Зависимости библиотек DLL

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

Читайте также:  Debian как установить apache

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

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

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

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

Частные библиотеки DLL

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

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

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

Обходчик зависимостей

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

С помощью средства обхода зависимостей вы можете документировать все библиотеки DLL, используемые программой. Это может помочь в предотвращении и устранении неполадок DLL, которые могут возникать в будущем. При установке Visual Studio 6,0 обход зависимостей находится в следующем каталоге:

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

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

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

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

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

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

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

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

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

Разработка DLL

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

Типы библиотек DLL

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

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

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

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

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

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

Читайте также:  Как установить windows 10 полностью очистив компьютер

Производительность при запуске

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

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

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

Точка входа DLL

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

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

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

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

Функции экспорта DLL

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

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

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

Как правило, следует использовать один заголовочный файл с оператором define и ifdef оператором, чтобы отделить оператор Export и import оператор.

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

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

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

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

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

Системная папка Windows

Функция Жетсистемдиректори Возвращает путь к системной папке Windows.

Функция Жетвиндовсдиректори Возвращает путь к папке Windows.

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

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

Читайте также:  Как установить 1с на сервер и работать через интернет

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

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

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

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

Самостоятельное включение и изоляция

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

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

Независимый от языка

Источник

Как установить DLL файлы на Windows?

Файл DLL – компонент динамически подключаемой библиотеки, чьи элементы используют практически все программы. Библиотека DLL файлов расположена в корневой папке системы. Компоненты должны быть все в наличии, иметь цифровую подпись, правильно работать и быть актуальными по версии. Если одно из требований не соблюдено, при запуске программы пользователь получит информационное уведомление: ошибка DLL. Неисправность свидетельствует о том, что отсутствует DLL файл, поврежден или устарел.

Как установить DLL файл

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

Помещение и регистрация файлов библиотеки

Перед тем как установить DLL файл на Windows 7,8,10, их нужно скачать, причем точно под разрядность системы.

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

Шаг 1. Кликаем правой кнопкой мыши по «Мой компьютер» и выбираем «Свойства»

Шаг 2. В открывшемся окне, мы может прочитать свойства компьютера, версию операционной системы и её разрядность 32 (х86) или 64 бит. В нашем случаи стоит 64-разрядная операционная система Windows 10.

·

Шаг 3. После скачивания файлов их нужно поместить в корневую папку, зарегистрировать

для х32 (х86) систем компонент необходимо заменить или поместить в папку C:\Windows\System32;

для х64 необходимо выполнить замену или переместить в папку C:\Windows\ SysWOW64;

Шаг 4. Файл нужно зарегистрировать в системе.

Сделать это можно, открыв командную строку комбинацией «Win» + «R», или нажать «Пуск» и «Выполнить»;

в открывшемся окне ввести через пробел следующее: regsvr32 имя файла.dll – где, «regsvr32» ─ команда для регистрации, а «имя файла.dll» – полное имя вставленного компонента;

Шаг 5. Нажмите «ОК», и перезагрузите компьютер, и новые параметры вступят в силу.

Сразу хочется отметить, что при регистрации возможны появления ошибок. Например: «Не удалось загрузить модуль». Обычно они возникают по 3 причинам

Второй способ регистрации

Шаг 1. Зарегистрировать файл можно с помощью командой строки, которую нужно запустить от имени администратора.

Шаг 2. Пишем команду regsvr32.exe + путь к файлу и жмём «Enter»

Шаг 3. Появится сообщение что «Всё прошло удачно», и просто перезагружаем компьютер

Вот и всё, файл зарегистрирован, можете пробовать запускать вашу игру или программу

А вот, некоторые советы, которые могут вам пригодиться.

Источник