Dlaczego tak
Biblioteka dynamiczna (w Windows .dll, w Linuksie .so) nie jest wbudowana w plik wykonywalny — system ładuje ją podczas uruchamiania programu, więc musi być obecna na komputerze docelowym. Kod biblioteki statycznej (.lib, .a) konsolidator kopiuje do pliku wykonywalnego, dlatego jej brak nie byłby zgłaszany przy uruchomieniu. Plik .dll zawiera skompilowany kod maszynowy, a nie źródłowy.