Log in

View Full Version : Visual C++ 2015 Runtime problem


bxyhxyh
24th December 2016, 00:14
KNLMeansCL, LSMASH are having problem with this.
They just don't load.
There is no function named KNLMeansCL
There is no function named LSMASHSource
There is no function named LWLibavVideoSource

When I checked it with avsmeter, it says
"dependencies that couldn't be loaded:
api-ms-win-crt-utility-l1-1-0.dll"
for LSMASH

and MSVCP140.dll for KNLMeansCL

Also when I try to open megui, it says
"c:\windows\system32\api-ms-win-crt-utility-l1-1-0.dll is either not designed to run on Windows or it contains error."

I'm pretty sure they're just one problem with Visual C++ 2015 runtime.

I've installed both x86 and x64 versions of Visual C++ 2015 runtime again and again. No difference.
What's happening here?

Groucho2004
24th December 2016, 00:23
I highly recommend using ricktendo's all-in-one installer (http://repacks.net/forum/viewtopic.php?f=6&t=125), it should sort out the problem.

LoRd_MuldeR
24th December 2016, 03:04
With Visual Studio 2015 things changed quite a bit:

With older Visual Studio versions, if you compiled a binary using the DLL-based C-Runtime (/MD option), then the resulting binary was depending on msvcrtxxx.dll (e.g. "msvcrt120.dll"). And the application would load the required msvcrtxxx.dll either directly from the application's install directory (which is known as "app-local deployment"), or it would load the msvcrtxxx.dll from the global Windows "System" directory. The former method allowed for shipping the C-Runtime DLL alongside with the application (in which case the application had no external dependencies), while the latter method required that the corresponding Visual C++ Redistributable package was installed separately on the machine.

Now, Visual Studio 2015 introduced the so-called "Universal CRT" (UCRT). If you compile a binary using the DLL-based C-Runtime (/MD option) now, the resulting binary is depending on vcruntimexxx.dll (e.g. "vcruntime140.dll") plus a bunch of UCRT libraries! The UCRT consists of a large number of DLL files, all of which have a name in the form of "api-ms-win-some-longish-name.dll". But, most important, while the vcruntimexxx.dll may still be shipped alongside with the application (similar to the old msvcrtxxx.dll), the UCRT is an integral part of the Windows operating system! Consequently, it is now always required to install the Visual C++ Redistributable separately on the machine in order to get the UCRT ready.

...well, not quite. As it was heavily demanded by programmers, Microsoft finally allowed "app-local deployment" of the UCRT. But it requires copying a huge number of DLL's from the Win32 SDK (not Visual Studio!) to the application's directory.

(I have yet to figure out what new "headaches" Microsoft is bringing to us with Visual Studio 2017 ^^)

feisty2
24th December 2016, 03:17
Upgrade to Windows 10

LoRd_MuldeR
24th December 2016, 03:24
Actually Visual Studio 2015 can still target Windows XP, provided that you set the proper option.

The Visual C++ 2015 Redistributable installer adds the UCRT to Windows XP. In fact it does so for all Windows that didn't ship with the UCRT included (i.e. all prior to Windows 10).

So that shouldn't be the problem here.

bxyhxyh
24th December 2016, 17:23
I've searched about ucrt and installed it separately before I ask the question. Didn't help.
I've installed that all in one runtime.

It changes nothing.

A month ago, power black out that caused this problem.
Strange that re-installing visual c++ 2015 runtime didn't help.

Groucho2004
24th December 2016, 19:24
I've searched about ucrt and installed it separately before I ask the question. Didn't help.
I've installed that all in one runtime.

It changes nothing.

A month ago, power black out that caused this problem.
Strange that re-installing visual c++ 2015 runtime didn't help.
I would try the following:

Uninstall all instances of "Microsoft Visual C++ 2xxx Redistributable" / "Microsoft Visual C++ 2xxx Runtime" / "Microsoft Visual C++ 2xxx Additional Runtime".

Install the all-in-one package again.

LoRd_MuldeR
24th December 2016, 21:00
I've searched about ucrt and installed it separately before I ask the question. Didn't help.

How exactly did you do that? UCRT is not meant to be installed "separately".

UCRT is an integral component of Windows and managed by Windows Update. Windows 10 has it already included. And for older Windows the Visual C++ Redistributable installer will install the corresponding MSU packages.

Maybe your attempt to add UCRT manually left something in an "improper" state :confused:

The Universal CRT is a Windows operating system component. It is a part of Windows 10. For Windows versions prior to Windows 10, the Universal CRT is distributed via Windows Update. There are Windows Update MSU packages for Windows Vista through Windows 8.1. Currently these MSU packages are installed as part of the VCRedist installation.

bxyhxyh
24th December 2016, 22:29
How exactly did you do that? UCRT is not meant to be installed "separately".
Just downloaded and installed kb2999226 and kb3118401 updates manually.
I think that shouldn't hurt it.

Anyway it worked ok until month ago, then suddenly gives me errors after black out happened.