18
votes

i have written a Win32/net DLL, it works fine under Win XP, Win7 and 8 but under Win 8.1 it fails.

Dependency Walker says: API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL not found (user32.dll will call them)

Google means, MS changed some System-DLLs in 8.1 (and ignored compatibility), so that many programs have the same problem.

Full list with "file not found":

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

Does someone have a idea how to fix this?

1
Why it "fails" exactly (start error message etc.?) and what´s the relevance of dependency walker? (besides, isn´t that thing long outdated)?deviantfan
You need to stop using Depends.exe, it has not been maintained in a very long time. Lots of things it cannot deal with anymore, including DLLs with forwarded exports like these api*.dll files. If you need help then you must be specific about "it fails".Hans Passant
@HansPassant: In my experience, it supports forwarded exports just fine. It's the changed DLL search order that confuses it.Ben Voigt
Ty for your comments, i found the problem, i forgot to install the C++ 2010 Redistributable as x86 Versionuser3600403
I'd recommend re-opening this. I'm having the same issues embedding python with boost.python. This is not an off-topic conversation.user562566

1 Answers

19
votes

Dependency Walker's static analysis is not to be relied upon. The fact that Dependency Walker reports issues with those DLLs based on its static analysis does not mean that this is indeed your problem. It is normal for perfectly fine executables to report problems as you describe under static analysis, and yet execute perfectly well.

Right now I'm looking at Dependency Walker's assessment of my application and I see the exact same list of supposedly problematic files as you do. But the application runs perfectly well. Simply put, you are looking at a false positive.

Microsoft has certainly not ignored compatibility when upgrading operating systems. On the contrary, it goes to extraordinary lengths to maintain good compatibility.

If you want to use Dependency Walker to debug dependency problems with native DLLs, then you really need to use it in dynamic mode, using the Profile menu. This will tell you which dependency fails to load at runtime, if indeed that is your problem. But depending on exactly where the balance is between managed and unmanaged, it may be that Dependency Walker is not the right tool for the job.

And your problem may not be an issue with native dependencies. The first step is for you to diagnose exactly what the problem is. That's beyond the scope of this question because we don't have any details of the errors that you encounter.