11

When starting certain programs on Windows 7 I'm getting the following error message:

The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing from your computer

enter image description here

Clicking "OK" dismisses the dialog and allows the software to run without any problems, but the error repeats next time I run the software.

Unfortunately reinstalling the software does not fix the problem.

This is getting very annoying. How do I resolve this?

DavidPostill
  • 153,128
  • 77
  • 353
  • 394

1 Answers1

14

What causes this error and how do I fix it?

It happens when applications built using the Windows 10 SDK are executed on earlier version of Windows.

This creates a dependency on Windows 10 Universal CRT (C Runtime).

To fix it, install the Update for Universal C Runtime in Windows:

The Windows 10 Universal CRT is a Windows operating system component that enables CRT functionality on the Windows operating system. This update allows Windows desktop applications that depend on the Windows 10 Universal CRT release to run on earlier Windows operating systems.

Microsoft Visual Studio 2015 creates a dependency on the Universal CRT when applications are built by using the Windows 10 Software Development Kit (SDK). You can install this update on earlier Windows operating systems to enable these applications to run correctly.


Further reading

DavidPostill
  • 153,128
  • 77
  • 353
  • 394
  • If a simple Hello World is compiled with VS2017, the executable depends on `api-ms-win-crt-runtime-l1-1-0.dll` but if compiled with mingw, it depends on `msvcrt.dll`. Why? – Biswapriyo Dec 31 '17 at 14:45
  • @Biswa No idea. I've never used Visual Studio ... however I would guess that VS uses the Windows 10 SDK and mingw doesn't. – DavidPostill Dec 31 '17 at 14:46
  • 3
    @Biswa: That's MinGW being stupid. The DLL it depends on is [effectively the Visual C *4.2* runtime (yes, it's over 10 versions old by now) from before the Windows 95 days](https://blogs.msdn.microsoft.com/oldnewthing/20140411-00/?p=1273/). It's not a library anyone should ever depend on. – Joey Dec 31 '17 at 16:03
  • But then why `Clicking "OK" dismisses the dialog and allows the software to run without any problems, ` – edc65 Dec 31 '17 at 17:39
  • @edc65 No idea ... – DavidPostill Dec 31 '17 at 17:39
  • 2
    @edc65 It's possible the library is compiled into the executable but not actually used. It's also possible you're just not using a feature in the software that requires this library. – RobertSF Dec 31 '17 at 19:23
  • 1
    @Joey: I think you mean the Visual C++ 4.2 C runtime. There was a Microsoft C 4.x compiler, but it didn't carry the moniker "Visual" and never had a 32-bit version. And that MSVCRT.DLL has been updated *many* times in the meantime with bug fixes and updates to e.g. Daylight Savings Time rules, but as you suggest, it is still ABI-compatible with Visual C++ 4.2 – Ben Voigt Jan 01 '18 at 04:01