|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
|
В языке C++ есть понятие "динамическая библиотека" ?17.07.2019, 10:00. Показов 3522. Ответов 40
Метки нет (Все метки)
Задача: научить программу на C++ подключать дополнительный функционал в Run-Time.
В языке C++ вообще, есть понятие динамическая библиотека (типа .DLL в MS-Windows) ?
0
|
|
| 17.07.2019, 10:00 | |
|
Ответы с готовыми решениями:
40
Понятие модуль и библиотека в PHP
Динамическая библиотека и библиотека импорта |
|
Злостный нарушитель
10340 / 5758 / 1269
Регистрация: 12.03.2015
Сообщений: 26,593
|
|
| 17.07.2019, 10:09 | |
|
0
|
|
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
| 17.07.2019, 10:09 | |
|
В С++ есть понятие "единица трансляции". Понятие "динамическая библиотека" (библиотека динамической компоновки) относится к уровню ОС. А по сути задачи: копай в сторону функций типа LoadLibrary (если Windows).
1
|
|
|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
|||
| 17.07.2019, 11:31 [ТС] | |||
|
Спасибо за ответ.
Интересует вопрос: В стандарт языка C++ входит понятие “динамическая библиотека”, чтоб функционал подключать по требованию в Run-Time ? Добавлено через 6 минут А мне нужно подключать функционал в режиме Run-Time Проводя аналогию с "единицей трансляции", это должно называться примерно "единица компиляции" ...
0
|
|||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
||
| 17.07.2019, 13:07 | ||
|
В стандарт языка вроде не входит.
Входит в платформо-специфичные библиотеки.
1
|
||
|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
||
| 17.07.2019, 13:52 [ТС] | ||
|
Спасибо, я просмотрю возможности Boost.
Но, уже начинаю понимать, что кроссплатформенные библиотеки могут быть только статическими. Ведь речь идет: "не должно быть связи с MS-Windows"
0
|
||
|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
|
| 17.07.2019, 14:06 [ТС] | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 17.07.2019, 14:09 | |
|
Artem_Pv, любая скомпилированная тобой программа будет "привязана с корнем" в ту операционную систему, для которой она компилировалась. Она никогда не запустится в другой ОС. Поэтому тебе в любом случае нужно отдельно делать релизы для винды, для нужной сборки линукса, для андроида и т.д. Соответственно твои мучения с попыткой сделать "всезапускающееся" приложение бессмысленны.
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 17.07.2019, 14:32 | ||
|
0
|
||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
|
|||||
| 17.07.2019, 16:07 | |||||
|
Любое решение (включая boost) так или иначе зависит от АПИ ОС. Кроссплатформенный boost прячет все зависимости от пользователя. Но это не значит, что зависимостей нет. Если вас устраивает кроссплатформенный вариант (а он вас устраивает, если только у вас нет шизофрении), значит вам может подойти и более простые решения. Например, основанные на: #ifdef, как уже предлагали выше. У с++ ABI не стандартизировано. Нет никакой гарантии совместимости статических библиотек. lib собранная в 2015 студии не совместима с проектом собираемым в 2013, например. между библиотеками разных компиляторов вообще никогда не было и намека на совместимость. С динамическими библиотеками дела обстоят получше. Если не считать того, что динамические заточены под конкретные оси. Интересно посмотреть, как вы собираетесь загружать число-дробильную dll под линуксами.
1
|
|||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 17.07.2019, 16:47 | |||
|
1) Содержимое библиотеки загружается в фиксированное место виртуального адресного пространства процесса. 2) Процессу передается табличка "функция с именем таким-то, лежит там-то". 3) Вызов функций происходит по стандартному stdcall-соглашению. Да, динамической памяти и работы с файлами нету, потому что требуется обращение к системному API.
0
|
|||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|||
| 18.07.2019, 11:14 | |||
|
0
|
|||
| 18.07.2019, 11:35 | |
|
0
|
|
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
|
||||
| 18.07.2019, 11:40 | ||||
|
Когда я писала: Либо вы можете продемонстрировать как легко и просто: Голословное бла-бла-бла - не интересно.
0
|
||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.07.2019, 12:15 | ||
|
Сборка: собираете библиотеку в com-формате "в файле только код для загрузки по адресу 0x12345678 и больше ничего". Каюсь, какие для этого нужны ключики gcc не помню. Загрузка под Виндой: выделяете память через VirtualAlloc по вышеозначенному адресу 0x12345678. Вызываете VirtualProtect с флагом PAGE_EXECUTE_READWRITE чтобы получить права на исполнение. Загружаете код библиотеки. Конец истории. Загрузка под Линуксом: абсолютно тоже самое, только функции называются mmap и mprotect.
0
|
||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
|
||||
| 18.07.2019, 12:33 | ||||
|
0
|
||||
| 18.07.2019, 12:33 | |
|
Помогаю со студенческими работами здесь
20
Динамическая библиотека Динамическая библиотека
Динамическая Библиотека
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|