ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
757351 Топик полностью
fk0, легенда (20.05.2017 00:45, просмотров: 93) ответил POV_ на Можно.. но в библиотеке сотня функций. Запарюсь ручками всё делать. Неужто нет готового механизма включить в проект что-то типа *.map, что дало бы знание основной прогой всех функций и их адресов?
Механизм есть. По такому приципу COM-объекты работают или DLL в виндовсе, или .so в линуксе. Основной бинарник линкуется статически с неким stub-library, которая имеет имплементацию каждой функции из загружаемой библиотеки со всеми такими же прототипами, и в этой прослойке она берёт адрес таблицы функций в основной библиотеке (когда она загружена), прибавляет к нему номер функции и вызывает по ссылке уже настоящую функцию. Ну а загружаемая библиотека должна таскать в себе таблицу функций и при загрузке как-то передавать её адрес основному коду. Как именно: вариантов масса, самое простое -- положить таблицу функций по нулевому смещению относительно адреса загрузки дополнительной библиотеки.
[ZX]