Механизм динамической компоновки в C++ работает следующим образом: 1
- При создании библиотеки DLL создаётся библиотека импорта, содержащая информацию для загрузчика Windows. 1
- При сборке исполняемого файла, который вызывает библиотеку DLL, компоновщик использует экспортированные символы в библиотеке импорта, чтобы сохранить эти сведения для загрузчика Windows. 1
- Когда загрузчик загружает библиотеку DLL, она сопоставляется с областью памяти приложения. 1
- Для выполнения операций инициализации, необходимых библиотеке DLL, вызывается специальная функция DllMain из библиотеки DLL (если она имеется). 1
Преимущества динамической компоновки:
- Экономия памяти. 13 Многие процессы могут использовать библиотеку DLL совместно, одновременно обращаясь к одной доступной только для чтения копии её частей в памяти. 1
- Экономия места на диске и пропускной способности. 1 Несколько приложений могут совместно использовать одну копию библиотеки DLL на диске. 1
- Простота обслуживания и обновления. 1 При обновлении библиотек DLL использующие их приложения не нужно перекомпилировать или повторно компоновать. 1 Они могут использовать новые библиотеки DLL сразу после их развёртывания. 1