Gencomp dll что это

Обновлено: 02.07.2024

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

Содержание:

  • Почему возникают ошибки с DLL?
  • Решение проблем с DDL файлами.
  • Недостающие компоненты C++ Runtime Library и DirectX.
  • Удаление сбойного приложения.
  • Обновление драйверов устройства.
  • Другие проблемы с DLL библиотеками.
  • Что делать если важный файл или DLL библиотека были случайно удалены?

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

Почему возникают ошибки с DLL?

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

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

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

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

Решение проблем с DDL файлами

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

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

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

Если проблема кроется в некорректной работе загрузчика, рекомендуем ознакомится со способами исправления в статье «Как восстановить загрузчик Windows 10» .

Недостающие компоненты C++ Runtime Library и DirectX

Чаще всего пользователи сталкиваются с проблемой ошибок DLL, которые связаны с отсутствием необходимых компонентов C++ Runtime Library либо DirectX .

Существует два способа решения проблем с недостающими компонентами DLL. Первый и более правильный – полная переустановка сбоящего ПО. Второй – скачивание непосредственного одного компонента, вызывающего ошибку.

Ошибка msvcr100.dll – сбойный компонент в системе безопасности.

Ошибки dxgi.* , d3dx9_25.*, d3d11.*, d3dx9.*, d3dx9_43.*, xinput1_3.*, d3dx9_31.*, xinput1_2.*, d3dx9_31.*, d3dx9_34.*, d3dx9_42.*, x3daudio1_7.*, x3daudio1_6.*, xrsound.* d3dx10_43.*, d3dx9_26.*, d3dx9_30.*, d3dx9_27.*, d3dx11_43.*, d3dcompiler_43.*, d3d10.*.

Ошибка steam_api.dll – распространённая ошибка среди геймеров и пользователей магазина цифровой дистрибуции Steam. Часто возникает при установке пиратских сборок игр и взломанных клиентов Steam.

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

Ошибка uplay_r1_loader.* , Uplay.exe, uplay.*, ubiorbitapi_r2_loader.* — аналогичная ошибка, как и с со Steam.

Ошибка xlive – проблемы с файлами цифрового магазина Microsoft.

Ошибка msvcrt.* , msvcr71.*, msvcrt.*, msvcp120.*, msvcp110.* x64 msvcr90.*, msvcr110.*, msvcr100.*, msvcr80.*, msvcr120.*.

Ошибка physxcudart_20.* , physxloader.* и т.д.- проблемы с файлами NVIDIA PHYSX SYSTEM.

Удаление сбойного приложения

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

Чтобы определить сбойное приложение, необходимо:

Шаг 1. Нажимаем левой кнопкой мыши по иконке «Поиск» (изображение лупы возле кнопки «Пуск») и вводим в строку фразу «Панель управления» , после чего переходим в непосредственно сам пункт «Панель управления» .

Файл gencomp.dll, также известный как файл VS Setup Generic Component, был создан компанией Microsoft для разработки Microsoft® Visual Studio® 2010. Файлы DLL относятся к категории типов файлов Win32 DLL (Библиотека динамической компоновки).

Первая версия gencomp.dll была выпущена для операционной системы Windows 10 04/12/2010 в составе Microsoft Visual Studio 2010 Ultimate 2010. Выпуск этого файла является последней и наиболее актуальной версией от компании Microsoft.

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




Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Разработчик ПО: Microsoft Corporation
Программа: Microsoft® Visual Studio® 2010
Авторское право: © Microsoft Corporation. All rights reserved.
Сведения о файле
Набор символов: Unicode
Код языка: English (U.S.)
Флаги файлов: (none)
Маска флагов файлов: 0x003f
Точка входа: 0x7f387
Размер кода: 1039360
Информация о файле Описание
Размер файла: 1204 kB
Дата и время изменения файла: 2019:12:02 17:15:11+00:00
Тип файла: Win32 DLL
Тип MIME: application/octet-stream
Тип компьютера: Intel 386 or later, and compatibles
Метка времени: 2010:03:18 11:23:19+00:00
Тип PE: PE32
Версия компоновщика: 10.0
Размер кода: 1039360
Размер инициализированных данных: 204288
Размер неинициализированных данных: 0
Точка входа: 0x7f387
Версия ОС: 5.1
Версия образа: 10.0
Версия подсистемы: 5.1
Подсистема: Windows GUI
Номер версии файла: 10.0.30319.1
Номер версии продукта: 10.0.30319.1
Маска флагов файлов: 0x003f
Флаги файлов: (none)
Файловая ОС: Win32
Тип объектного файла: Dynamic link library
Подтип файла: 0
Код языка: English (U.S.)
Набор символов: Unicode
Наименование компании: Microsoft Corporation
Описание файла: VS Setup Generic Component
Версия файла: 10.0.30319.1 built by: RTMRel
Внутреннее имя: gencomp.dll
Авторское право: © Microsoft Corporation. All rights reserved.
Название продукта: Microsoft® Visual Studio® 2010
Версия продукта: 10.0.30319.1

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Ошибки библиотеки динамической компоновки gencomp.dll

Файл gencomp.dll считается разновидностью DLL-файла. DLL-файлы, такие как gencomp.dll, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например Setup.exe. Данные файлы были созданы для того, чтобы различные программы (например, Microsoft Visual Studio 2010 Ultimate) имели общий доступ к файлу gencomp.dll для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.

  • Нарушение прав доступа по адресу — gencomp.dll.
  • Не удается найти gencomp.dll.
  • Не удается найти C:\Program Files (x86)\Microsoft Visual Studio 10.0\Microsoft Visual Studio 2010 Ultimate - ENU\gencomp.dll.
  • Не удается зарегистрировать gencomp.dll.
  • Не удается запустить Microsoft Visual Studio 2010 Ultimate. Отсутствует требуемый компонент: gencomp.dll. Повторите установку Microsoft Visual Studio 2010 Ultimate.
  • Не удалось загрузить gencomp.dll.
  • Не удалось запустить приложение, потому что не найден gencomp.dll.
  • Файл gencomp.dll отсутствует или поврежден.
  • Не удалось запустить это приложение, потому что не найден gencomp.dll. Попробуйте переустановить программу, чтобы устранить эту проблему.

Файл gencomp.dll может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с Microsoft Visual Studio 2010 Ultimate) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла gencomp.dll может быть вызвано отключением питания при загрузке Microsoft Visual Studio 2010 Ultimate, сбоем системы при загрузке gencomp.dll, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.


Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку gencomp.dll, перейдите к шагу 2 ниже.


Шаг 2. Если вы недавно установили приложение Microsoft Visual Studio 2010 Ultimate (или схожее программное обеспечение), удалите его, затем попробуйте переустановить Microsoft Visual Studio 2010 Ultimate.

Чтобы удалить программное обеспечение Microsoft Visual Studio 2010 Ultimate, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить Microsoft Visual Studio 2010 Ultimate.

Если на этапе 2 также не удается устранить ошибку gencomp.dll, перейдите к шагу 3 ниже.


Microsoft Visual Studio 2010 Ultimate 2010

Шаг 3. Выполните обновление Windows.


Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла gencomp.dll. Мы храним полную базу данных файлов gencomp.dll со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии Microsoft Visual Studio 2010 Ultimate . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Microsoft Visual Studio 2010 Ultimate - ENU\

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

GenComp.dll это файл библиотеки динамических ссылок, который является частью разработанный BioWare, Версия программного обеспечения: обычно о по размеру, но версия у вас может отличаться. Файлы DLL - это формат файлов для динамических библиотек, который используется для хранения нескольких кодов и процедур для программ Windows. Файлы DLL были созданы, чтобы позволить нескольким программам использовать их информацию одновременно, тем самым сохраняя память. Это также позволяет пользователю изменять кодировку нескольких приложений одновременно, не изменяя сами приложения. Библиотеки DLL могут быть преобразованы в статические библиотеки с помощью дизассемблирования MSIL или DLL в Lib 3.00. Формат файла .exe файлов аналогичен формату DLL. Файлы DLL, и оба типа файлов содержат код, данные и ресурсы.

Наиболее важные факты о GenComp.dll:

GenComp.dll безопасен, или это вирус или вредоносная программа?

Ответ - нет, сам по себе GenComp.dll не должен повредить ваш компьютер.

В отличие от исполняемых программ, таких как программы с расширением EXE, файлы DLL не могут быть выполнены напрямую, но должны вызываться другим кодом, который уже выполнен. Тем не менее, DLL имеют тот же формат, что и EXE, и некоторые могут даже использовать расширение .EXE. В то время как большинство динамических библиотек заканчиваются расширением .DLL, другие могут использовать .OCX, .CPL или .DRV.

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

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

Вот почему обычно, когда вы видите новый файл .dll на вашем компьютере, где-то будет файл .exe.

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

Могу ли я удалить или удалить GenComp.dll?


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

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

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

Некоторые программы также могут устанавливать файлы DLL в несколько папок вне папки Program Files (где установлено большинство программ). Поиск этих DLL-файлов может быть очень трудным, а удаление их может быть опасным.

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


  • Приложение не удалось запустить, поскольку GenComp.dll не был найден. Переустановка приложения может решить проблему.
  • GenComp.dll не найден
  • GenComp.dll отсутствует
  • Обязательная DLL-библиотека GenComp.dll не найдена
  • Приложение или GenComp.dll не является допустимым образом Windows
  • GenComp.dll отсутствует или поврежден
  • Не удается найти GenComp.dll
  • Не удается запустить GenComp.dll. Отсутствует необходимый компонент: GenComp.dll. Пожалуйста, установите GenComp.dll снова.

Обновлено ноябрь 2021 г .:

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

скачать


(опциональное предложение для Reimage - Cайт | Лицензионное соглашение | Политика конфиденциальности | Удалить)

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

Запустить SFC

SFC для поврежденной DLL

Самый безопасный способ восстановить отсутствующий или поврежденный файл GenComp.dll, вызванный вашей операционной системой Windows, - запустить встроенную проверку системных файлов, которая заменяет отсутствующие или поврежденные системные файлы.

Для этого щелкните правой кнопкой мыши кнопку «Пуск» на компьютере Windows 10, чтобы открыть меню WinX, и щелкните ссылку «Командная строка (администратор)».

В окне CMD скопируйте следующую команду и нажмите Enter:

Сканирование может занять 10 минут, и если оно успешно завершено, вы должны перезагрузить компьютер. Запуск sfc / scannow в безопасном режиме или при запуске может дать лучшие результаты.

Обновить драйверы

Обновление-драйверы

Обновите драйверы вашего устройства, чтобы увидеть, решит ли это проблему.

Восстановление при загрузке

инструмент для восстановления при запуске

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

Загрузите или переустановите GenComp.dll

заменить отсутствующие файлы DLL

В большинстве учебников и руководств авторы предупреждают своих читателей, чтобы они не загружали отсутствующие файлы GenComp.dll со случайных и непригодных для использования веб-сайтов, которые могут предоставить им вредоносное ПО. Это не без причины, конечно. Правда в том, что в Интернете полно сайтов, которые обещают пользователям решить их проблемы, открыв определенные приложения или программы как можно скорее. К сожалению, очень немногие могут действительно оправдать ваши ожидания.

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

В этой статье описывается, что такое динамическая библиотека ссылок (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.

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