Am I missing some Windows dependency?

I have Rust installed on a Win-7 64 VM:

V:\>rustup show
Default host: x86_64-pc-windows-msvc
rustup home:  C:\Users\mark\.rustup

stable-x86_64-pc-windows-msvc (default)
rustc 1.48.0 (7eac88abb 2020-11-16)

V:\>rustc -V
rustc 1.48.0 (7eac88abb 2020-11-16)

V:\>type C:\Users\mark\.cargo\config
[target.x86_64-pc-windows-msvc]
rustflags = ["-Ctarget-feature=+crt-static"]

V:\>type myapp\.cargo\config
[cargo-new]
[target.x86_64-pc-windows-msvc]
rustflags = ["-Ctarget-feature=+crt-static"]
[target.i686-pc-windows-msvc]
rustflags = ["-Ctarget-feature=+crt-static"]

When I build myapp as an executable, it works fine for me and for many other people.
However, one person says that the executable won't run for them. They have a 64-bit Windows.

According to dependency walker these files:

API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL

are "delay-load" dependencies that cannot be found. Only the last of these exists on my machine, and anyway, the application runs fine for me.

So, apart from the CRT dependency, are there any other Windows dependencies that I could be missing? And if so, how do I add them?

Does the system that can't run the program have Visual Studio installed? Do the systems that can run it have Visual Studio installed?

Does the event viewer have any event records with more information?

Digression: I recently discovered that my Windows 10 program would silently abort when it couldn't find a load-time DLL, rather than explicitly mentioning what it needed. Is this a "new" thing? I have vague memories of Windows 2000/XP stating the name of the library it was looking for. Am I remembering that wrong?

The user who can't run it won't provide any more information --- oh, except that the OS is Windows 10.
I run the software on one VM that has Visual Studio, and on others (including a Windows 10 VM) that don't.
So it may be just some unique configuration issue for that person rather than a more general issue.

That dependency walker output looks spurious. The API-MS-* DLLs are virtual DLLs.

In any case, my first thought is that they may be using an old version of Windows. If they're using a pre Windows 10 OS and haven't installed the necessary update (from over five years ago) then their OS might not support the ucrt, even if it's statically linked. At least not without some shims.

However, this is just a guess. It's hard to diagnose without more information.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.