Dependency eXplorer is a tool used to explore the dependencies (imported DLLs and symbols) of an executable file on Windows. It is similar to the legacy software Dependency Walker or its modern rewrite Dependencies.
- Standalone binary (no dependency other than basic Windows' DLLs)
- Can run on Windows XP
- Can analyse both 32-bit and 64-bit binaries
- Can undecorate C++ mangled names (VC++, MinGW, ...)
- Basic support for .NET assemblies
The GUI is developed using the venerable Win32 API, without any helper library. This is done on purpose to explore what it's like to develop a software that way in 2025.
Another self-imposed constraint (for the sake of exploring what it is possible to achieve) is to generate a binary that can run on the no less venerable Windows XP (SP3) using the most recent compiler version possible.
Visual C++ 2019 16.7 (toolset 14.27) is the last version to support Windows XP. Since this compiler partially support C++20, it is therefore possible to run C++20 code on Windows XP. And by compiling with static linking (/MT), the final output is a binary that can run on Windows XP without having to ship or install any other dependency.
To install the toolset
14.27you will need a Professional license of Visual Studio 2019, because the Community edition does not allow you to install another version than the latest one available.
Once the toolset 14.27 is installed, you can select it via CMake by specifying v142,version=14.27 for CMAKE_GENERATOR_TOOLSET. This can be done in a preset file via the toolset field.
⚠️ You need to use CMake 3.27 or above for that feature to work correctly. Indeed, older versions such as CMake 3.20 (shipped with Visual C++ 2019) will generate.vcxprojfiles that will ignore the request to use a specific toolset. Which will in turn break binary compatibility with Windows XP. For that reason, make sure to specifycmake_minimum_required(VERSION 3.27)in your main CMakeLists.txt file.
The Microsoft documentation does not seem to talk about it, but selecting toolset 14.27 is not enough. You also need to use a compatible Windows SDK version. It seems to be the case up to version 10.0.22621.0 included (Windows SDK for Windows 11 22H2).
- For example, using Windows SDK version
10.0.26100.0will produce a binary that depends on functions such asFlsAlloc,FlsFreeand similar (introduced with Windows Vista). - This is because since Visual Studio 2015 a VC++ program needs to link with the Universal CRT (UCRT) which is a system component since Windows 10 (
ucrtbase.dlland the relatedapi-ms-win-crt-*.dllAPI sets). As a result, the libraries to link with the UCRT (dynamically or statically vialibucrt.lib) are part of the Windows SDK.
- Dependencies: a .NET rewrite of the legacy Dependency Walker
- PE Bear: Portable Executable reversing tool with a friendly GUI.
The logo comes from Freepik.
The Win32 icon file was created with greenfish icon editor pro.
This project is released under the MIT (No Attribution) license.
It uses the following external libraries:
- LLVM Demangle: Apache License 2.0

