|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
|
В языке C++ есть понятие "динамическая библиотека" ?17.07.2019, 10:00. Показов 3766. Ответов 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
|
||||||||||||
|
4132 / 2710 / 433
Регистрация: 09.09.2017
Сообщений: 12,042
|
||
| 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
|
|
|
4132 / 2710 / 433
Регистрация: 09.09.2017
Сообщений: 12,042
|
||||||||
| 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 | |
|
Динамическая библиотека Динамическая библиотека
Динамическая Библиотека
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|