История изменений
Исправление hobbit, (текущая версия) :
Мне такой способ неизвестен, и даже если он есть, он очевидно будет 1) кривой; 2) непереносимый; 3) неочевиден для восприятия любым, кто через полгода будет копаться в коде, включая автора.
Кроме того, если so-шки писали разные люди в разных проектах, то у них почти наверняка даже в случае «идейной схожести» кроме разных имён функций будут и «чуть-чуть разные» параметры, а тут уже никакое «автоматическое связывание» не поможет. А если их пишет один человек или разные люди, но по одному руководящему документу - то что мешает и имена функций унифицировать?
Короче, если имена/параметры функций идентичны, можно сделать dlopen с плагинами и dlsym на каждую функцию. А если разные - то либо выбор (например, через враппер) в вызывающей программе (dlopen тогда вообще не нужен, если so друг с другом не конфликтуют самим фактом загрузки, их можно средствами ОС грузить)... либо опять плагины с so-переходниками. Сложно? Да, сложно, унификация разных интерфейсов по определению непростая задача, даже если они отличаются какой-то мелочью.
Исправление hobbit, :
Мне такой способ неизвестен, и даже если он есть, он очевидно будет 1) кривой; 2) непереносимый; 3) неочевиден для восприятия любым, кто через полгода будет копаться в коде, включая автора.
Кроме того, если so-шки писали разные люди, то у них почти наверняка даже в случае «идейной схожести» кроме разных имён функций будут и «чуть-чуть разные» параметры, а тут уже никакое «автоматическое связывание» не поможет. А если их пишет один человек или разные люди, но по одному руководящему документу - то что мешает и имена функций унифицировать?
Короче, если имена/параметры функций идентичны, можно сделать dlopen с плагинами и dlsym на каждую функцию. А если разные - то либо выбор (например, через враппер) в вызывающей программе (dlopen тогда вообще не нужен, если so друг с другом не конфликтуют самим фактом загрузки, их можно средствами ОС грузить)... либо опять плагины с so-переходниками. Сложно? Да, сложно, унификация разных интерфейсов по определению непростая задача, даже если они отличаются какой-то мелочью.
Исходная версия hobbit, :
Мне такой способ неизвестен, и даже если он есть, он очевидно будет 1) кривой; 2) непереносимый; 3) неочевиден для восприятия любым, кто через полгода будет копаться в коде, включая автора.
Кроме того, если so-шки писали разные люди, то у них почти наверняка даже в случае «идейной схожести» кроме разных имён функций будут и «чуть-чуть разные параметры», а тут уже никакое «автоматическое связывание» не поможет. А если их пишет один человек или разные люди, но по одному руководящему документу - то что мешает и имена функций унифицировать?
Короче, если имена/параметры функций идентичны, можно сделать dlopen с плагинами и dlsym на каждую функцию. А если разные - то либо выбор (например, через враппер) в вызывающей программе (dlopen тогда вообще не нужен, если so друг с другом не конфликтуют самим фактом загрузки, их можно средствами ОС грузить)... либо опять плагины с so-переходниками.