dependency_runner
A cross-platform command-line tool that resolves and inspects Windows PE (DLL/EXE) dependencies, like ldd for Windows.
Repository Health
Technical Analysis
dependency_runner is a cross-platform CLI toolkit for debugging Windows executable and DLL loading problems, even from Linux or macOS. It ships wldd, a Windows-oriented reimplementation of GNU ldd, and deprun, a richer tool that emulates the Windows loader to resolve dependency trees, check for missing libraries and symbols, and output human-readable or JSON reports. It understands API sets, KnownDLLs, Dependency Walker .dwp files, and Visual Studio project files.
What You Get
- wldd, a Windows-focused reimplementation of GNU ldd for PE files
- deprun, an extended tool resolving full dependency trees and symbols
- Missing-library and missing-symbol reporting with readable output
- JSON output plus support for API sets, KnownDLLs, .dwp, and Visual Studio project files
Common Use Cases
- Debugging DLL-not-found startup failures without a Windows machine
- Auditing a Windows binary’s full dependency and symbol tree
- Integrating PE dependency checks into CI via JSON output
Under The Hood
Architecture
The crate builds two binaries, wldd and deprun, over a shared library that parses PE files (import and export tables, API set schema, KnownDLLs) and emulates the Windows loader’s search order to resolve each dependency to a concrete path. Resolution results feed a reporting layer that renders either ldd-style text, a fuzzy-searchable browser (on Unix), or structured JSON.
Tech Stack
A Rust CLI project (Cargo workspace with a checked-in Cargo.lock) parsing the PE/COFF format and Windows loader metadata. It includes fixture binaries under test_data/ for its tests. Published on crates.io as dependency_runner, licensed LGPL-3.0.
Code Quality
The repository ships CI workflows and a test_data/ tree of sample Windows projects used to validate resolution against real binaries, plus a CHANGELOG. Development is active and the feature set is documented in detail in the README.
API Design
As a CLI, its ergonomics come from clear subcommand flags (—check-symbols, —userpath) and output that intentionally mirrors ldd for familiarity. The JSON mode makes it scriptable. Understanding Windows loader concepts (API sets, KnownDLLs) helps interpret advanced output.