|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
В чём разница между динамической и статической линковкой библиотеки?04.05.2013, 12:48. Показов 36642. Ответов 14
Метки нет (Все метки)
0
|
|
| 04.05.2013, 12:48 | |
|
Ответы с готовыми решениями:
14
Есть ли разница между подключением статической библиотеки и подключением одного только файла
Не объясните в чём разница между случаями |
| 04.05.2013, 14:48 | |
|
Динамические библиотеки - это как дрель со сменной насадкой: перед работой вставляется нужная.
То есть часть кода, которая может быть заменена и/или разделена с другими аппликациями, выносится в динамические библиотеки. То, что не предполагается менять и разделять с другими, линкуется статически. Все остальное - детали реализации.
0
|
|
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
| 04.05.2013, 15:05 [ТС] | |
|
gazlan, а можешь пример динамической линковки?
0
|
|
| 04.05.2013, 15:32 | ||
|
"kernel32.dll", например, динамически линкуется с почти каждым Windows-приложением. Аналогично и для других OS. Динамическое связывание используется и при нехватке оперативной памяти (через менеджмент оверлеев), и при использовании сторонних компонент (технологии COM итп), очень часто в динамические библиотеки выносится Runtime компиляторов. Фактически, 9/10 из того, что находится в адресном пространстве процесса, загружается туда динамически.
1
|
||
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
| 04.05.2013, 15:43 [ТС] | |
|
gazlan, я имею ввиду пример реализации?
Добавлено через 5 минут Если можно на Code Blocks'e.
0
|
|
|
Ушел с форума
|
|
| 04.05.2013, 15:44 | |
|
При динамической компоновке код библиотеки помещается во внешний модуль (dll), связывание с
которым происходит на этапе выполнения. Отсюда и название - динамическая. При статической компоновке код библиотеки собирается вместе с клиентским кодом, как одно целое. Пример: среда выполнения Visual C++ (runtime) может компоноваться как динамически, так и статически. Если программа компонуется с runtime динамически, то при вызове стандартных функций, таких как printf, будет использована их реализация, помещенная в соответствующие dll. Для Visual C++ 2008, например, это msvcr90.dll и msvcp90.dll. Если программа использует runtime статически, тогда код printf и других используемых ей функций будет собран в том же exe. Оба подхода имеют как достоинства, так и недостатки. В первом случае (динамика) экономится пространство на диске, в памяти, устраняется лишнее дублирование, а обновление библиотеки можно сделать простой заменой dll. Во втором случае (статика) уменьшается количество зависимостей от dll, программа становится более легко переносимой, в случае небольших программ (когда счет идет на десятки или сотни килобайт) также экономится место, так как нет необходимости таскать за собой dll, большая часть функций которых не используется. Иногда в случае статической компоновки может быть сгенерирован более эффективный код.
11
|
|
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
| 04.05.2013, 16:11 [ТС] | |
|
Убежденный, а если я неявно подключаю динамическую библиотеку, то это статическая или же динамическая линковка?
0
|
|
|
Ушел с форума
|
|||||||||||
| 04.05.2013, 18:35 | |||||||||||
|
Что значит "неявно" ? dll - это всегда динамическая компоновка.
Но здесь есть еще один термин - связывание, оно может быть ранним или поздним. При раннем связывании вы создаете жесткую ссылку на dll на этапе компоновки, и эта dll загружается в адресное пространство процесса во время его запуска. А при позднем связывании программа вызывает LoadLibrary(Ex)/GetProcAddress, загружая dll уже в процессе выполнения. Например, я могу написать так:
компоновщиком на этапе сборки программы. А вот пример позднего связывания:
6
|
|||||||||||
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
| 04.05.2013, 18:43 [ТС] | |
|
Убежденный, насколько мне известно именно это и називаеться явное и неявное подключение.
Оба эти варианта линкуются динамически?
0
|
|
|
Ушел с форума
|
|||||
| 04.05.2013, 18:59 | |||||
|
В терминах MSDN - "load-time dynamic linking" и "run-time dynamic linking". Добавлено через 2 минуты системные локации. Если держать свои dll при себе, то их обновление ничем не грозит, так как последствия локальны. Ну можно еще вспомнить про COM и SxS, только к теме это имеет уже слабое отношение.
0
|
|||||
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
| 04.05.2013, 19:17 [ТС] | |
|
Спасибо всем за помощь.
0
|
|
|
13 / 13 / 7
Регистрация: 21.04.2013
Сообщений: 245
|
|
| 24.02.2015, 21:59 | |
|
Убежденный, скажите, пожалуйста, а как подключать .so в Linux? И на что обратить внимание при их компиляции?
0
|
|
|
Ушел с форума
|
|
| 24.02.2015, 22:07 | |
|
3
|
|
|
13 / 13 / 7
Регистрация: 21.04.2013
Сообщений: 245
|
|
| 24.02.2015, 22:22 | |
|
Убежденный, сорри. И на том спасибо.
0
|
|
| 24.02.2015, 22:22 | |
|
Помогаю со студенческими работами здесь
15
В чём разница между pch.h и stdfx.h В чём разница между процедурами и функциями ?
Вызов функции одной динамической библиотеки из другой динамической библиотеки В чём разница между состояниями потока failbit и badbit? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|