Предположим, у меня есть 2 статических Libs S1
и S2
, которые являются разными версиями одного и того же lib и имеют один и тот же C (не C++) интерфейс, хотя реализация отличается. 2 общих библиотеки D1
и D2
, каждая из которых ссылается только на S1
или S2
. Предположим, что приложение A
связано с S2
, которое является последним из статических библиотек и динамически загружает как D1
, так и D2
с dlopen
. Будет ли D1
использовать только функции S1
или есть ли способ принудительно использовать его для использования функций S2
? Может ли что-то поделать не так в этой настройке?Разрешение символа общего объекта
EDIT: Это делает общий объект S
хороший способ, чтобы обойти эту проблему, как D1
и D2
может и ссылку на S
тогда?
Что вы подразумеваете под тем, что внутри библиотек? Мне это непонятно. – nakiya
Я имею в виду, что это зависит от того, что внутри 'S1' и' S2'. Например, если у них есть глобальные статические данные, они не будут разделяться между ними. Это может быть или не быть тем, что вы хотите. –