если у библиотеки/библиотечной функции изменяется интерфейс, то у библиотеки меняется номер версии и линкер на основании требовании программы к ВЕРСИИ библиотеки с новой версией линковать не будет.Сообщение от captain cobalt
если у библиотеки/библиотечной функции изменяется интерфейс, то у библиотеки меняется номер версии и линкер на основании требовании программы к ВЕРСИИ библиотеки с новой версией линковать не будет.Сообщение от captain cobalt
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
причем здесь перегрузка? ты руками назначаешь алиас для фукнкии и по нему ее вызываешь.Сообщение от Vitamin
при настоящей перегрузке, ассемблер должен "магическим" образом проанализировать твой код перед CALL_ и понять какой из вариантов onefunc ты имел в виду и вызвать его
Пусть имеется функция "нарисовать окно с виджетами". Ей аргументом передаётся множество всех виджетов, она пробегается по нему и для каждого виджета вызывает виртуальную функцию "нарисовать".Сообщение от Vitamin
Пусть имеется программа которая использует эту функцию.
Программа порисовала виджеты.
Теперь мы вышли из программы, и запустили другую программу, которая использует новые виджеты. Модули с этими виджетами загрузились при запуске программы. Программа передаёт этой функции новые виджеты, и, о чудо, функция "научилась" рисовать только что загруженные виджеты.![]()
тогда надо было начинать с рассказа о том что уже есть и как это работает. и обязательно объяснить чем это лучше/удобнее других методов.Сообщение от Vitamin
Т.е. CLSID - это часть доки по винапи?Сообщение от captain cobalt
Ты писал на С? На разных компиляторах? Если писал, то знаешь, что разные компиляторы по-разному ведут себе с неиницализироваными переменными. Ничем не отличается от твоего примера. К чему я это сказал? К тому, что с этой проблемой не стоит заморачиваться.Сообщение от captain cobalt
Если среди множества всех виджетов нет виджета, описанного в какой-то конкретной библиотеке, то он не нарисуется. А чтобы его нарисовать, надо о нем знать, и о нем знает клиент библиотеки.Сообщение от captain cobalt
Все так, но ты сам себе противоречишь. Невозможно добавлять новые виджеты (сиречь расширять функционал) уже готовой программы! Она использует только те понятия (библиотеки), о которых знает на момент компиляции. Так что расширение функционала готовых программ прямо так в лоб невозможно.Сообщение от captain cobalt
Ссылка на документацию есть. Рассказывал я про нее неоднократно в разных местах. Библиотека в течение трех лет уже разрабатывается, так что кое-какие наработки есть и мне очень и очень понравились получаемые возможности- один и тот же контейнер для хранения кода может служить и готовым приложением (для некой ОС) и статической библиотекой и динамической библиотекой. Для любителей керналя можно реализовать и его без каких бы то ни было проблем! Вот скажите, спецы по амиге, можно ли (если да, то как) экспортировать из модуля данные? Функции экспортируются через керналь по индексу, а вот если мне надо, например, использовать шрифт или текст, зашитый в библиотеке, я смогу это сделать без использования специальных методов получения адреса?Сообщение от elf/2
Это правильно.Сообщение от elf/2
Это тоже правильно.Сообщение от elf/2
Я не хочу перегруженные функции на ассемблере.
Пусть есть уже написанная функция. У неё есть вручную прописанная сигнатура. При компиляции хэш сигнатуры попадает в таблицу экспорта.Сообщение от elf/2
Теперь мы хотим воспользоваться этой функцией из другого модуля. Делаем мы это только по имени. При компиляции хэш сигнатуры из упомянутой таблицы экспорта просто копируется в таблицу импорта этого нового модуля. Чтобы компоновщик проверял на равенство. Вот и всё.
Это уже компилятор.Сообщение от Vitamin
Зачем из исходника в исходник, если можно прямо в объектный файл?
Их можно положить в отдельный файл. Это неважно.Сообщение от Vitamin
Всё равно без них компоновщик ничего не будет компоновать.
Версия это слишком грубо.Сообщение от elf/2
Линуксоиды это знают. Когда есть совместимая библиотека, но другой версии, с которой новый софт не собирается.
Сигнатура - это проверка именно по совместимости, а не по версии.
Причём каждого символа отдельно. Если та часть модуля, которая используется - совместима, то модуль компонуется.
документация это modules.txt внутри modules.zip? такой подход не прокатитСообщение от Vitamin
нужны примеры: зачем это, чем это лучше... ну и как минимум группа товарищей которая это использует. а большинство посетителей форума (включая меня) это теоретики![]()
"-Святой отец! Моя жена жуткая стерва, она меня постоянно оскорбляет!Сообщение от captain cobalt
-Разводитесь
-Но я ее люблю!
-Не разводитесь"
Это я к тому что есть возможность реализовать перегруженые функции (для этого никаких усилий даже не потребуется), а вот использовать или нет их- это уже личное дело программиста.
Да? А таблицы релокации ты как будешь делать? Если ассемблер не поддерживает макросов, то необходимо будет создание дополнительных промежуточных таблиц с адресами адресозависимых точек.Сообщение от captain cobalt
Зачем множить сущности? Разбивка на два файла имеет смысл разве что для отладки...Сообщение от captain cobalt
Эт я так, к сведению, не споря %)
А какой подход покатит? А то просили "хоть чтото". Дал все что есть- "не прокатит"...Сообщение от elf/2
Могу подкинуть ряд готовых модулей, простенький настройщик и исходник линкера (неоптимальный).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)