>>358I'm talking about dynamic linking, where it makes sense to just link to one DLL, shared in the whole system, containing all the functions.
In general you shouldn't have to link in a single mega DLL for the same reasons you shouldn't have to link a large static library. An unnecessary dependency is an unnecessary dependency; even if dynamic linking amortizes the memory cost over many applications, the problem is still there.
That being said, MSVCRT's ABI specifically is a nightmare. It's not worth it to do as Microsoft has done without commitment to maintain the exact same partition of functions between DLLs in future releases; without that everyone will just bundle the entire set of DLLs rather than deal with breakage when the boundaries move.
Given that classic libc was never really designed to be subdivided in this way, any failure here is unsurprising. musl explicitly does not try to do this because (they claim) robust implementation of the full set of standard libc APIs is impossible without much coupling. It may be that the only practical way out is to abandon the standards.