|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 48
|
|
В чём разница между динамической и статической линковкой библиотеки?04.05.2013, 12:48. Показов 36410. Ответов 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? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|