# DLL missing and 0xc000007b: find the component, not a download

> Diagnose missing DLL and 0xc000007b errors by bitness, runtime family and component store — and why downloading a DLL from a random site is the wrong fix.

**Tested on**

- Build: 26100.1742
- Edition: Enterprise LTSC 2024
- Architecture: x64
- Evidence: E2
- Risk: R1
- Verified: 2026-10-28
- Test machine: PVE 9.2.2 VM 361; Windows 11 Enterprise LTSC 2024 26100.1742; official VC++ 2015-2022 Redistributable x64 + x86

## The short answer

A missing DLL is a **dependency** problem, not a file problem. Install the official runtime that owns the DLL, or repair the component store. Downloading a DLL from a “DLL fix” site is how people get malware and version conflicts.

> **Danger: Never download a single DLL from a third-party site**
>
> The file may be the wrong architecture (x86 vs x64), the wrong version, or malicious. Windows ships signed components; runtimes ship signed installers. Use those.

## Read the error first

| Symptom | Likely owner | First move |
|---|---|---|
| `0xc000007b` | 32-bit app loading a 64-bit DLL (or the reverse) | Check the app’s architecture and the DLL folder |
| `0xc0000135` | .NET Framework or a missing managed dependency | Install the required .NET version |
| `vcruntime140.dll` / `msvcp140.dll` | Visual C++ 2015–2022 Redistributable | Install the official x64 **and** x86 redist |
| `d3dx9_43.dll` | DirectX 9 legacy runtime (often old games) | Install the DirectX End-User Runtime |
| `api-ms-win-crt-*.dll` | Universal C Runtime (Windows 10/11 component) | `sfc` / `DISM`, then Windows Update |
| `xinput1_3.dll` | DirectX/XInput legacy | DirectX End-User Runtime |

## Procedure

- [ ] **Confirm the architecture** (Terminal (admin))

  ```powershell
  # App bitness (PE header)
  $p = 'C:\Path\To\Game.exe'
  [System.Reflection.AssemblyName]::GetAssemblyName($p) # managed only
  # For native binaries, use Task Manager → Details → Platform, or sigcheck -nobanner -a
  ```
  A 32-bit game cannot load `System32`'s 64-bit DLLs; it loads from `SysWOW64`. Mixing them produces `0xc000007b`.

  Expected: The app and the DLL match x64/x64 or x86/x86.

- [ ] **Repair the component store** (Terminal (admin))

  Run an elevated terminal:

  ```powershell
  DISM /Online /Cleanup-Image /RestoreHealth
  sfc /scannow
  ```
  Run DISM first when SFC reports it cannot repair files. Reboot and retry the app.

  Expected: Both commands finish without “cannot repair” errors.

- [ ] **Install the official runtime** (Terminal (admin))

  - Visual C++ 2015–2022: install both `x64` and `x86` from Microsoft.
  - DirectX 9 legacy: DirectX End-User Runtime.
  - .NET: install the exact major version the app targets (Framework 3.5/4.8, or .NET 6/8 desktop runtime).

  Expected: The app launches without the missing-DLL dialog.

- [ ] **Check the event log** (Settings)

  Event Viewer → Windows Logs → Application. Look for `SideBySide` (assembly version conflict) or `Application Error` (faulting module). A version conflict is not fixed by copying a newer DLL.

  Expected: A side-by-side or module-load error names the failing module.

## Lab check: missing VC++ runtime (E2)

On a fresh LTSC 26100.1742:

- `C:\Windows\System32\vcruntime140.dll` and `msvcp140.dll`: **missing**.
- `C:\Windows\SysWOW64\vcruntime140.dll` and `msvcp140.dll`: **missing**.
- Only the CLR variants `vcruntime140_clr0400.dll` and `vcruntime140_1_clr0400.dll` were present. Those are not the VC++ 2015–2022 redistributable.

Installed the official Visual C++ 2015–2022 Redistributable (`vc_redist.x64.exe` and `vc_redist.x86.exe` from `aka.ms/vs/17/release`), both exit code 0. After install:

| Path | Version | Size |
|---|---|---|
| `System32\vcruntime140.dll` | 14.44.35211.0 | 124,544 |
| `System32\msvcp140.dll` | 14.44.35211.0 | 557,728 |
| `SysWOW64\vcruntime140.dll` | 14.44.35211.0 | 91,216 |
| `SysWOW64\msvcp140.dll` | 14.44.35211.0 | 447,616 |

`DISM /Online /Cleanup-Image /CheckHealth`: **No component store corruption detected.**

`SFC /verifyonly` completed and reported **“Windows Resource Protection found integrity violations”**; details are in `C:\Windows\Logs\CBS\CBS.log`, and this run did not repair them. Do not treat an SFC violation as proof of malware, and do not expect SFC to restore a missing VC++ redistributable.

This verifies the **missing runtime** path and the official repair. It does **not** reproduce the `0xc000007b` dialog, a cracked DLL, or a bitness mismatch; those remain unverified.

## What actually causes `0xc000007b`

1. **Bitness mismatch** — the most common cause.
2. **A cracked or replaced DLL** — the loader rejects it or the app crashes later.
3. **Corrupt component store** — `DISM`/`SFC` are the repair path.
4. **Missing Visual C++ runtime** — install the redist, not a single DLL.
5. **A game overlay or anti-cheat injecting a wrong-architecture module** — disable overlays and retest.

## What not to do

- Do not copy DLLs between `System32` and `SysWOW64`.
- Do not “register” a DLL with `regsvr32` unless the vendor says it is a COM component.
- Do not disable Defender to make a loader work.
- Do not follow a video that ships a “DLL pack”; the pack is the attack surface.

## Sources

- [Microsoft Support — Use the System File Checker tool](https://support.microsoft.com/en-us/windows/use-the-system-file-checker-tool-to-repair-missing-or-corrupted-system-files-79aa86cb-ca52-166a-92a3-966e85d4094e)
- [Microsoft Learn — DISM /RestoreHealth](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options)
- [Microsoft — Latest supported Visual C++ Redistributable downloads](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist)

---

Source: https://winbook.fyi/en/windows/fixes/dll-runtime/
