|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
|
В языке C++ есть понятие "динамическая библиотека" ?17.07.2019, 10:00. Показов 3991. Ответов 40
Метки нет (Все метки)
Задача: научить программу на C++ подключать дополнительный функционал в Run-Time.
В языке C++ вообще, есть понятие динамическая библиотека (типа .DLL в MS-Windows) ?
0
|
|
| 17.07.2019, 10:00 | |
|
Ответы с готовыми решениями:
40
Понятие модуль и библиотека в PHP
Динамическая библиотека и библиотека импорта |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||||||||
| 18.07.2019, 13:27 | ||||||||||||
gcc -ffreestanding -c testc.c -o rawcode.o ld -Ttext 0xA00000000 --oformat binary -o rawcode rawcode.o Получаем файл rawcode, который собственно и содержит код библиотеки. Я где-то говорил что будут dll? Загрузка под Линуксом. Извините, мне лень настраивать виртуалку чтобы тоже самое сделать под Виндой:
4
|
||||||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,101
|
||
| 18.07.2019, 13:30 | ||
|
eva2326, пример с wine я уже привел, он примерно так и работает. Программа расковыривает заголовок PE файла, находит адрес начала и запускает выполнение. Поскольку внутри одной процессорной архитектуры инструкции будут одними и теми же, это работает. И точно так же подгружаются нативные/сторонние библиотеки. Так что ничего невозможного тут нет. Правда, это уже ни разу не решение исходной задачи ТСа, поскольку динамическая библиотека не загружается-вызывается, а долго и упорно парсится чтобы найти начало кода, потом возня со страницами памяти. Не говоря уж о том, что не так уж часто встречаются разделяемые библиотеки, совсем не имеющие зависимостей на системные. Не говоря о том, что даже так код вызова для разных ОС будет сильно отличаться. Не говоря о том, что даже в пределах одной ОС, но на разном железе придется пересобирать библиотеку (инструкции-то разные).
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.07.2019, 13:42 | ||
|
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 18.07.2019, 13:54 | ||
|
В обратную сторону решений не встречал. Да и wine существует благодаря достаточно стабильному Вендовому ABI. Под Линем даже, чтобы программа без пересборки запустилась на большинстве дистров той же архитектуры, ее обычто компилируют в среде RHEL 6 или даже RHEL 5 десятилетней давности. Как-то этот вопрос обсуждали на форуме. Я скомпилировал требуемую программу в Centos 5 и она действительно запустилась на всех Дистрах, которые были у участников тусовки. PS. Использовалось, конечно, принятое в Линуксах динамическое связывание. PS2. Эту проблему сейчас с успехом решают контейнеры. Может, это причина успеха неуклюжего, на мой взляд Докера.
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 18.07.2019, 13:55 | |
|
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.07.2019, 14:07 | ||
|
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 18.07.2019, 15:50 | |
|
0
|
|
|
Неэпический
|
||
| 18.07.2019, 16:01 | ||
|
Добавлено через 8 минут eva2326, это я к тому, что Renji всё доступно написал еще в сообщении #15, но Вы, видимо, не читали ничего из того, что он писал. Получается, лишь бы брякнуть.
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 18.07.2019, 16:05 | ||
|
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||
| 18.07.2019, 16:19 | ||
|
Правда для этого нужно уметь не только читать, но и понимать смысл прочитанного. С последним у вас не очень.
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||
| 18.07.2019, 17:37 | ||
|
Кроме проблемы назойливости некоторых глупых мальчиков. Которые либо не умеют читать, либо просто слишком глупые и не понимают смысла написанного. Не знаете, на этом форуме можно как нибудь поставить занудного идиота в игнор?
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 18.07.2019, 17:48 | |
|
0
|
|
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,101
|
||||||||
| 19.07.2019, 11:20 | ||||||||
eva2326, сформулируйте свою позицию, что вы хотите доказать. Что бинарный код, собранный под одну ОС не может быть в принципе запущен на другой без эмуляции? Это не так. Что динамическая библиотека под одну ОС не может быть в принципе запущена на другой? Тоже не так. Что динамическая библиотека под одну ОС не может быть запущена на другой штатными средствами? Обычно это так, но не всегда. Ну а с тем, что подобные извращения обычно не имеют смысла, поскольку библиотеку можно пересобрать под конкретную ОС, или использовать JIT-компиляцию или скрипты, никто вроде и не спорит.
0
|
||||||||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||||||||
| 19.07.2019, 11:47 | ||||||||
|
Либо есть особенная причина когда цена себя оправдывает: Из-за зашкаливающего количества противопоказаний. Но это все не так важно. Важно, что автора темы интересовал вопрос кросс-платформенности. Ну так вот, моя позиция заключается в том, что такие "универсальные бинарники" не имеют к сабжу ни малейшего отношения. Просто предложила продемонстрировать на практике. Что бы наглядно продемонстрировать всем (включая новичков), какой гемморой на самом деле скрывался под приятны словосочетанием: В телегу с разберу. Козу на возу. Не ковыряй в носу! (ц)
0
|
||||||||
|
Неэпический
|
||||||||
| 19.07.2019, 13:57 | ||||||||
|
Под Windows с бинарником, собранным в Linux - ниже. Собираем бинарник на Linux, у меня он получился 72 байта. Закидываем его в Windows. Пишем код для загрузки:
g++ -o main main.cppзапускаем: ЧТД. Применены VirtualAlloc и VirtualProtect, как и писал Renji. Также он писал, что для выполнения потребуется "загрузчик" кода. Т.е. обо всём этом уже сказано выше.
2
|
||||||||
| 19.07.2019, 13:57 | |
|
Динамическая библиотека Динамическая библиотека
Динамическая Библиотека
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|