fts_depends - Windows Dependency Checker
October 15th, 2022
If you've done any Windows development then you've likely run into issues with missing dlls. Windows is particularly annoying because if a transitive dependency fails to load you don't get a helpful error message. The whole process is confusing and frustrating.
A common debugging tool is Dependency Walker. It's functional but excruciatingly slow. This week I ran into a problem and it took 20 minutes to run. 😲 Another option is to use dumpbin.exe /DEPENDENTS
. It's fast, but it isn't recursive.
Unhappy with the solution space I used Rust to quickly bang out a replacement tool.
GitHub: fts_depends
fts_depends
fts_depends.exe
is a Rust command line tool. It invokes dumpbin.exe
and parses the text output. Then it makes a best effort to identify where that library will be loaded from and repeats the process.
Here's an example of what it looks like.

It can also print a tree view.

If a dependency is not found it's displayed with a helpful ⚠️ symbol.

Default behavior ignores "system libraries" that live in Windows\system32
, or begin with either api-ms-win
or ext-ms-win
.
fts_depends.exe
tool does NOT actually load any libraries. This makes it very fast, but imperfect. Binary location is guesstimated via the which crate. It will not pick up search paths added by executables or launcher scripts.
This tool also won't pickup dependencies that are programmatically loaded at runtime. However the intent of this tool is to quickly debug why programs or modules fail to load.
Conclusion
That's it. I regularly have issues with missing DLLs. The most common Windows tools did not satisfy me. It took probably 4 hours to write a tool that better meets my needs.
GitHub: fts_depends
Cargo: cargo install fts_depends