Missing Microsoft DLLs in Win8.1 x64 when compiling in x64

Started by
2 comments, last by Servant of the Lord 9 years, 4 months ago

I'm compiling my project for x64 architecture the first time, on Win8.1 x64.

I'm using MinGW64.

It compiles fine, and I also recompiled the DLLs I use (Boost, SFML, and prebuilt Qt binaries using the same compiler).

Upon running, it crashes complaining of missing DLLs.

Using the x64 version Dependency Walker, I see that these DLLs are missing:


API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL          (delay-loaded) 
EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL   (delay-loaded) 

I've never seen those DLLs before, but apparently they end up as a dependency of both SFML and boost_filesystem when compiled in x64 (or perhaps just when compiled with the particular compiler I downloaded?).

Anyway, some googling suggests they may be part of the Visual Studio 2013 runtime, but I also noticed they are in both the WinSxS folder, but also a folder called 'downlevel' located at C:\Windows\System32\downlevel

I've never noticed/seen that 'downlevel' folder before. Is that new in Win8.1, or new with x64 versions of Windows, or what?

They are linked to by DLLs that are linked to by other DLLs that are part of the Windows OS (winmm.dll) that

I could've potentially been linking to them on my old machine and just never had a problem with them before, but now they are either missing or suddenly required AND missing. "now" meaning after migrating from Win7 to Win8.1 or after migrating from x86 to x64.

Is there a way I can remove the dependency on them? I'm having difficulty finding information about them or why they are suddenly now missing/needed.

Advertisement

(posting for posterity)

I realized I can run my executable directly from its folder in Windows Explorer just fine, and it runs fine. Only running from the IDE is causing it to crash with the exception message.

So the problem was that I had updated my %PATH% environmental variable to point to some 3rd-party libraries that I was using (boost and SFML), but QtCreator was already running using the environment without those paths added. Exiting and restarting QtCreator didn't fix the path, but restarting the OS did. I'm not 100% sure why I needed to restart the OS - QtCreator loads the %PATH% variables at startup. Possibly restarting the OS finished installing the VS runtime? I'm not sure.

As for Dependency Walker giving those specific missing DLLs? Some people are claiming it's a false alarm on Dependency Walker's part. I don't know for sure.

In any case, my project compiles and runs (from the IDE and from Windows Explorer) just fine now, which is all I care about for the time being.

Thanks!

Have you tried to install the vc redist x32 or x64 as suggested here?

http://answers.microsoft.com/en-us/windows/forum/windows8_1-performance/32-bit-application-fails-to-start-after-81-upgrade/b825723e-e2a2-4c8f-bd1f-10446a5d7059?page=5

Not sure if that really works as I'm using win 7 x64 myself.

Thanks for the link! My problem ended up being that I was linking to the wrong directory with my SFML and boost DLLs. tongue.png

DependencyWalker was giving me false-negatives for these DLLs, but they weren't actually missing:


API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL
EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL

...though they may have gotten installed when I installed the Visual Studio 2013 x64 runtime, and after restarting.

This topic is closed to new replies.

Advertisement