Fixing a missing-DLL error
"The program can't start because SOMETHING.dll is missing from your computer." The dialog names a file, so the obvious move is to find that file. That move is wrong nearly every time, and it is the reason this site exists.
Why downloading the file is the wrong fix
- A library downloaded from an unrelated site is an unsigned binary of unknown origin that you are placing in a directory every program trusts.
- Even a genuine copy of the right file is usually the wrong version, and a version mismatch fails later and less obviously than a clean missing-file error.
- The named file is frequently not the missing one. A library that loads fine can fail because something *it* depends on is absent, and the error names the top of the chain.
- It treats a symptom. The install that was supposed to place that file is still broken afterwards.
What is usually actually wrong
- A runtime was never installed
- The program was built against a redistributable runtime that ships separately from the program. Installing the correct redistributable from its vendor fixes it permanently.
- Architecture mismatch
- A 32-bit process cannot load a 64-bit library, or the reverse. The file exists, it is simply unloadable by that process.
- A damaged or partial install
- Repairing or reinstalling the application puts back everything it shipped, in the versions it shipped.
- A dependency of the dependency
- The named library is present, but something further down the chain is not. This one needs the chain listed before it can be fixed.
What this page will cover in full
- A decision path from the exact wording of the error to the likely cause
- How to identify which redistributable a given library belongs to
- How to inspect a binary's imports and its architecture before changing anything
- How to read a loader trace, so the answer is observed rather than guessed