В Windows сначала изображение загружается в память. Ядро анализирует, какие библиотеки (читай «DLL») ему потребуется, и загружает их тоже.
Затем он редактирует образ программы для вставки адресов памяти каждой из библиотечных функций, которые ему требуются. Эти адреса уже имеют пробел в двоичном файле .EXE, но они просто заполнены нулями.
Затем каждая процедура DLL DllMain () выполняется одна за другой от самой необходимой DLL до последней, как в порядке следования зависимостей.
Как только все библиотеки были загружены и подготовлены, наконец, образ запускается, и то, что сейчас произойдет, будет зависеть от используемого языка, используемого компилятора и самой программы.