Как узнать, какой DLL нужен программе или игре

Программа не запускается и выдаёт окно с текстом вроде «Запуск невозможен, отсутствует MSVCP140.dll» — именно в этом сообщении уже содержится главный ответ на вопрос, какой DLL нужен. Система Windows сама сообщает имя отсутствующей библиотеки, и задача пользователя сводится к тому, чтобы правильно прочитать ошибку и понять, к какому пакету относится файл.

Сложнее ситуация, когда сообщение расплывчатое («точка входа в процедуру не найдена») или программа молча закрывается. В таких случаях придётся применить диагностику: посмотреть журнал событий, проанализировать зависимости исполняемого файла или проверить разрядность системы. Разберём все рабочие способы по порядку — от самого простого к продвинутым.

Читаем текст ошибки: самый быстрый способ

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

Обратите внимание на формулировку сообщения. Фраза «отсутствует» или «не найден» означает, что файла нет в системе вовсе. Фраза «не является приложением Win32» или «точка входа не найдена» говорит о другом: файл есть, но он повреждён, не той версии или несовместимой разрядности. Лечение в этих случаях разное.

  • 🔎 «Отсутствует X.dll» — файл нужно установить вместе с соответствующим пакетом.
  • ⚙️ «Точка входа в процедуру не найдена» — вероятно, установлена устаревшая версия библиотеки.
  • 🧩 «Не удаётся загрузить DLL» — возможна несовместимость разрядности (32/64 бит).
  • 🚫 Ошибка 0xc000007b — часто связана с конфликтом 32- и 64-битных библиотек.

Определяем, к какому пакету относится DLL

Зная имя файла, нужно понять, откуда он берётся. Случайная загрузка DLL со сторонних сайтов — плохая идея: правильный путь — установить официальный пакет, в состав которого входит библиотека. Ниже — соответствие самых частых DLL их источникам.

Имя DLLПакет-источникТипичные программы
msvcp140.dll, vcruntime140.dllVisual C++ Redistributable 2015–2022Игры, офисные и графические программы
msvcp120.dll, msvcr120.dllVisual C++ Redistributable 2013Старые игры и утилиты
d3dx9_43.dll, xinput1_3.dllDirectX End-User Runtime (устаревшие компоненты)Игры эпохи DirectX 9
x3daudio1_7.dll, xaudio2_7.dllDirectX End-User RuntimeИгры со старым звуковым движком
api-ms-win-crt-*.dllОбновление Universal CRT / Visual C++Программы на старых версиях Windows

Если имя DLL не похоже ни на один из примеров, введите его в поисковик вместе со словом «относится к» — обычно по первым результатам видно, какой пакет или программа поставляют этот файл. Ориентируйтесь на официальные источники: сайт Microsoft, страницу разработчика программы или документацию к игре.

⚠️ Внимание: не скачивайте отдельные DLL-файлы с сайтов-каталогов библиотек. Такие файлы могут быть устаревшими, неподходящей разрядности или вредоносными. Безопасный способ — установка официального пакета целиком.
📊 Какая ошибка DLL встречается у вас чаще всего?
MSVCP140.dll / VCRUNTIME140.dll
Файлы DirectX (d3dx9, xinput)
api-ms-win-crt
Другая или разные каждый раз

Смотрим журнал событий Windows

Когда программа закрывается без видимого сообщения, имя проблемной библиотеки можно найти в Просмотре событий. Нажмите Win + R, введите команду и подтвердите:

eventvwr.msc

Откройте раздел Журналы Windows → Приложение и найдите записи с уровнем «Ошибка» в момент сбоя. В описании события с источником Application Error обычно указаны два важных поля: имя сбойного приложения и имя сбойного модуля — это и есть DLL, из-за которой происходит падение.

Записей в журнале много, поэтому проще всего воспроизвести ошибку: запустите программу ещё раз и сразу обновите журнал клавишей F5 — свежая ошибка окажется вверху списка.

Анализируем зависимости исполняемого файла

Если нужно узнать заранее, какие DLL требуются программе, используются специальные анализаторы зависимостей. Классический инструмент — Dependency Walker, более современная альтернатива — Dependencies (открытый проект, работает с современными приложениями). Оба открывают EXE- или DLL-файл и показывают дерево всех библиотек, которые он загружает.

Порядок действий простой: запустите анализатор, откройте через меню File → Open исполняемый файл программы и дождитесь построения дерева. Отсутствующие библиотеки будут подсвечены — по их именам и определяется, чего не хватает в системе.

☑️ Проверка зависимостей программы

Выполнено: 0 / 5

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

Что такое динамическая загрузка DLL

Программа может вызывать функцию LoadLibrary уже во время работы и подгружать библиотеку по условию — например, только при включении определённой функции. Такие зависимости не видны статическим анализаторам, их выявляют по журналу событий или средствами мониторинга вроде Process Monitor.

Проверяем разрядность системы и библиотеки

Частая скрытая причина ошибок — несовпадение разрядности. 64-битная программа требует 64-битные DLL, 32-битная — 32-битные, даже если система у вас 64-разрядная. Узнать разрядность Windows можно так: Параметры → Система → О системе → Тип системы.

Разрядность самой программы определяется по её расположению или через Диспетчер задач: на вкладке «Подробности» для 32-битных процессов в ряде версий Windows отображается пометка. Также 32-битные программы обычно устанавливаются в папку Program Files (x86).

  • 💻 64-битная Windows — устанавливайте оба варианта Visual C++ Redistributable: x64 и x86.
  • 📁 System32 — парадоксально, но в 64-битной Windows здесь лежат 64-битные DLL.
  • 📁 SysWOW64 — а здесь находятся 32-битные библиотеки для 32-битных программ.
  • 🔄 Ошибка 0xc000007b — типичный признак того, что программа подхватила DLL не той разрядности.
⚠️ Внимание: не копируйте DLL вручную в папки System32 или SysWOW64 без понимания разрядности файла. Неправильное размещение создаёт новые ошибки, а перезапись системных библиотек может нарушить работу других программ.

Проверяем целостность системных файлов

Если DLL на месте, но ошибка persists — файл может быть повреждён. В Windows есть встроенное средство проверки: запустите командную строку от имени администратора и выполните:

sfc /scannow

Проверка занимает некоторое время. Если утилита найдёт повреждённые системные файлы, она попытается восстановить их из хранилища компонентов. При неудаче дополнительно используется команда DISM /Online /Cleanup-Image /RestoreHealth, после чего проверку sfc повторяют.

Для библиотек, входящих в состав конкретной программы, эффективнее её переустановка или функция «Восстановить» в установщике. Для игр в клиентах вроде Steam есть проверка целостности файлов: она автоматически докачает недостающие и заменит повреждённые компоненты.

Часто задаваемые вопросы

Можно ли просто скачать недостающий DLL из интернета?

Технически можно, но это рискованно: файл может оказаться не той версии или разрядности, а на непроверенных сайтах встречаются вредоносные подделки. Правильный способ — установить официальный пакет (Visual C++ Redistributable, DirectX и т. п.), в состав которого входит нужная библиотека.

Почему ошибка осталась, хотя я установил нужный пакет?

Возможные причины: установлена версия не той разрядности (нужны обе — x86 и x64), требуется перезагрузка, либо программе нужна более старая версия пакета — например, Visual C++ 2013 вместо 2015–2022. Проверьте точное имя DLL в ошибке ещё раз.

Как узнать, какие DLL нужны программе до её установки?

Откройте её EXE-файл в анализаторе зависимостей (Dependencies или Dependency Walker) — дерево покажет статические зависимости. Также системные требования программы на сайте разработчика обычно указывают нужные версии Visual C++, DirectX или .NET.

Что делать, если в ошибке указан DLL с непонятным именем?

Введите имя файла в поисковик — по результатам обычно видно, какой программе или пакету он принадлежит. Если библиотека относится к самой сбоящей программе, поможет её переустановка; если к системе — проверка через sfc /scannow.

Почему программа работала раньше, а теперь требует DLL?

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