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.
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
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.
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.
cargo install fts_depends