It's not about saving memory or disk space (although those are still very significant, especially on mobile). It's about allowing a program's components to evolve separately.
It's not about saving memory or disk space (although those are still very significant, especially on mobile). It's about allowing a program's components to evolve separately.
Dynamic linking is one way to ensure that all apps automatically get the correct clipboard implementation for the system they are running on. Of course this applies to all system features, not just copy/paste.
Of course C++ is really terrible at this. Its binary interface is very fragile: you can't add variables or virtual methods without breaking clients, and of course different STLs cannot interoperate. So for the case of C++ specifically, ABI compatibility is lipstick on a pig. Still, the gcc guys deserve props for their abundance of caution, and it does pay dividends for other tools (e.g. gdb) that have to understand the ABI.
True but if someone is dealing with syscalls on Windows they're programming something very unusual.
>so you really want to use kernel32.dll and friends or you're signing up for pain.
Why? There is no pain involved unless a function that isn't implemented in older versions is imported.
The file open/save dialogs embed Explorer and all its shell extensions, each of which is a DLL. These can vary from system to system.
Something similar is present on Linux with libnss; if you want to do username-userid lookups, you have to load the relevant libraries at runtime.