Ну, давай придерживаться Windows. Я отвечу в нескольких словах, а затем проголосую за перенос этого вопроса на сайт CS вместо основного SO.
Во-первых, динамическое связывание c может быть при запуске программы (предварительно связанный вариант) и когда код программы явно запрашивает некоторую загрузку библиотеки. Хотя там используются одни и те же библиотеки DLL, детали различаются.
Предварительно связанный вариант будет работать с так называемой библиотекой импорта, которая имеет статус c, но содержит специальные блоки (батуты AKA), которые заменяются переходами к реальному коду при динамической обработке. c loader прикрепляет реальную библиотеку (файл DLL). Для компоновщиков, которые не знают о динамической загрузке c, библиотеки импорта достаточно для обеспечения динамической c компоновки - так, как это было в DOS / Windows. Вызывающий код может не знать подробностей, если код предоставляется библиотекой stati c или dynamici c.
Для загрузки на лету используются такие методы, как LoadLibrary, чтобы загрузить библиотеку (и активировать ее). ) и GetProcAddress, чтобы получить указатель реальной реализации функции. В этом случае приложение (или другая библиотека) знает о деталях этого механизма.
Надеюсь, этого краткого описания достаточно, чтобы предоставить вам достаточно слов для дальнейшего изучения.