"The program can't start because a DLL is missing": how to fix it on Windows
"DLL is missing" is a general Windows message, not one error. The fix depends on the file name in the message: most often a Visual C++ runtime, a legacy DirectX file, or the app's own file. Start by reinstalling the app, then install the matching Microsoft runtime.
On this page
What it means
When a program starts, it asks Windows to load helper files called DLLs, by name. Windows looks through a fixed list of places: the program's own folder, System32, the Windows folder, the current folder and the folders on PATH, among others. If it finds no matching file, or only one of the wrong type (32-bit instead of 64-bit), you get a message such as "The program can't start because X.dll is missing from your computer" or "The code execution cannot proceed because X.dll was not found". Some programs just close with no message.
One detail trips people up. If a DLL has dependencies of its own, Windows looks for those by name only. So the file in the message may not be the one you expected: it can be something a different DLL needs.
The fix depends entirely on the name in the message, so read it first. Then find it in the causes below. This article is written for Windows 10 and 11. The current Visual C++ v14 package supports only those (plus Windows Server 2016 and later), so Windows 7, 8 and 8.1 are not covered by the steps below.
Symptoms and causes
You are likely dealing with this problem if:
- A dialog on launch or install: "The program can't start because X.dll is missing from your computer. Try reinstalling the program to fix this problem."
- The same dialog worded "The code execution cannot proceed because X.dll was not found"
- The program closes straight away with no message
- Common names in the message: msvcp140.dll, vcruntime140.dll, vcruntime140_1.dll, msvcr110.dll, api-ms-win-crt-runtime-l1-1-0.dll, d3dx9_43.dll, xinput1_3.dll
The usual causes, most common first:
- Visual C++ Redistributable missing, too old or the wrong architecture
- Programs built with Microsoft's C++ tools need a runtime at least as new as the one they were built with. A 32-bit program needs the x86 package even on 64-bit Windows. The v14 package covers Visual Studio 2015 to 2026, but 2012, 2013 and 2010 are separate packages: msvcr110.dll, for example, needs the 2012 one.
- Legacy DirectX helper files missing
- Files like d3dx9_43.dll and xinput1_3.dll belong to older DirectX versions. Old games often depend on them, and the usual remedy is Microsoft's DirectX End-User Runtime.
- Universal C Runtime missing on an older system
- Names starting with api-ms-win-crt point to it. It is part of Windows 10 and later and is updated through Windows Update. Windows 7, 8 and 8.1 may lack it, and those systems are outside the scope of this article.
- The program's own DLL is gone from its folder
- Antivirus may have quarantined it, the install or extraction may have been incomplete (running a game from inside a zip is a typical case), or the .exe was moved away from its DLLs.
- Corrupted or missing Windows system file
- Applies when the named DLL normally ships with Windows and lives in
System32. - The DLL exists but cannot be found
- A 32/64-bit mismatch, a wrong working directory or
PATH, or a missing dependency of the named DLL can all produce the same message.
How to fix it
Work through these in order. They start with the quickest, safest checks and move to deeper repairs; stop as soon as the problem is gone.
1.Restart and reinstall the program that shows the error
Vendors often bundle the right runtime and their own DLLs. A reinstall also restores files that were deleted or quarantined.
- Restart the PC and try the program again.
- Open Settings > Apps > Installed apps, uninstall the program, then install it again from the vendor's official source.
- If the program came in a zip file, extract it fully to a normal folder first and run it from there, not from inside the archive.
2.Install the Microsoft Visual C++ Redistributable
This fixes the most common case: msvcp140.dll, vcruntime140.dll, vcruntime140_1.dll and similar. For these names, see also VCRUNTIME140.dll or MSVCP140.dll was not found. Microsoft's page says the latest v14 package supports only Windows 10 and 11 (and Windows Server 2016 and later), so use these links on those systems.
- On Windows 10 or 11, download the latest supported v14 package for 64-bit Windows from Microsoft: https://aka.ms/vc14/vc_redist.x64.exe and run it.
- Also download and run the 32-bit package: https://aka.ms/vc14/vc_redist.x86.exe. Many programs are 32-bit even on 64-bit Windows. Install both if unsure.
- On an ARM64 PC, the ARM64 package is https://aka.ms/vc14/vc_redist.arm64.exe.
- If the DLL name is msvcr110, msvcr100, msvcr120 or another older one, install the matching older package (2012, 2010 or 2013) from Microsoft's Latest Supported Visual C++ Redistributable Downloads page. Microsoft marks these older versions as no longer supported, but still lists them there. The latest v14 package does not replace them.
- Restart the PC, then start the program again.
3.Install Windows updates
On Windows 10 and later the Universal C Runtime is serviced through Windows Update. This covers api-ms-win-crt names.
- Open Settings > Windows Update and click Check for updates. Install everything offered, then restart.
4.Install the DirectX End-User Runtime for d3dx9, xinput and similar files
Names such as d3dx9_43.dll and xinput1_3.dll are legacy DirectX files that older games still ask for. The DirectX End-User Runtime is the Microsoft package normally used for them.
Before you start: Download it only from microsoft.com. Search for the exact title DirectX End-User Runtime Web Installer and check that the page is on Microsoft's own Download Center before you run anything.
- Find the DirectX End-User Runtime Web Installer on Microsoft's Download Center and download it from there.
- Run it, follow the prompts, then restart and launch the game again.
5.Check antivirus quarantine and restore the file
Security software sometimes removes a DLL from a program's folder. This is common with game cracks and trainers, which this site does not recommend.
Before you start: Restore a file only if it belongs to software you trust and got from the official vendor. If you are unsure, leave it quarantined and reinstall the program instead.
- Open your antivirus program and look in its quarantine or history list for the DLL name from the error. The menu name differs between products.
- If it belongs to a legitimate program, restore it, or simply reinstall the program.
6.Repair Windows system files
Use this when the named DLL is a Windows file in System32, or when several unrelated programs fail the same way.
- Open Command Prompt as administrator and run the DISM repair:
DISM.exe /Online /Cleanup-image /Restorehealth - When it finishes, run System File Checker and let it complete.
sfc /scannow - Restart the PC and test the program again.
7.What not to do: do not download a single DLL from the internet
DLL download sites are a common route for malware. The files are often outdated or the wrong architecture, and a file placed in System32 is trusted by every program.
- Get the file only through the official package that contains it: the program's installer, a Microsoft redistributable, Windows Update or the repair steps above.
Check that it worked
- The program starts without the DLL dialog.
- The same program still starts after a restart of the PC.
If it still fails
- Write down the exact DLL name and whether the program is 32-bit or 64-bit, then search for that name on its own: a specific DLL often has a more targeted fix.
- If the message names a DLL that you know exists, a dependency of it may be missing or the architecture may not match. Microsoft's DLL search order page explains where Windows looks. A tool called Dependencies can show what a DLL needs. The old Dependency Walker is outdated and can report DLLs as missing when they are not.
- If Windows itself will not start, try Safe Mode, System Restore or a Windows reset. A reset can erase apps and, depending on the option, files, so back up first.
- Contact the program's vendor with the exact DLL name. Microsoft's own runtime page points users to the app vendor when an app needs an updated C++ runtime.
Questions
Is the latest Visual C++ package enough for every program?
No. The v14 package covers Visual Studio 2015 to 2026, but 2010, 2012 and 2013 runtimes are separate and install side by side.
Why do I need the x86 package on 64-bit Windows?
A 32-bit program loads 32-bit DLLs, so it needs the x86 runtime even on a 64-bit system.
Can I use the latest Visual C++ package on Windows 7, 8 or 8.1?
Microsoft's page lists support for the latest v14 package only on Windows 10 and 11 and Windows Server 2016 and later. On older Windows, contact the program's vendor or use a legacy package that matches the DLL name.
Sources
- Latest Supported Visual C++ Redistributable DownloadsOfficial · Microsoft Learn
- Determine which DLLs to redistributeOfficial · Microsoft Learn
- Dynamic-link library search orderOfficial · Microsoft Learn