Windows shared library caveats

In general on any project, “shared” libraries on Windows using .DLL files have numerous caveats that aren’t an issue on macOS and Windows due to decades-old stark differences in how Windows links and runs shared libraries. One key distinction is that Windows has no concept of Rpath as Unix-like OS have, which means the .DLL have to be on PATH environment variable for all shared libraries used in an executable. This can be a key drawback for Windows shared libraries in non-trivial projects using 3rd party libraries. In general we strongly recommend using “static” libraries on Windows, as the downsides of shared libraries on Windows are significant.

In the past year or so, GitHub Actions runners for Windows broke most “shared” library runs across projects. The projects would run in “shared” on physical Windows machines reliably, but not on CI. We have disabled Windows shared builds on GitHub Actions CI across all projects.