2010-10-14 2 views
0

Предположим, у меня есть 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 тогда?

ответ

0

D1 будет просто использовать S1 сек функции, и есть ли способ обеспечить его использовать S2 сек функции?

Да, D1 будет использовать функции S1. Нет, вы не можете использовать его для использования функций S2.

Возможно, что-то пошло не так в этой настройке?

Это зависит от того, что находится внутри ваших библиотек.

+0

Что вы подразумеваете под тем, что внутри библиотек? Мне это непонятно. – nakiya

+0

Я имею в виду, что это зависит от того, что внутри 'S1' и' S2'. Например, если у них есть глобальные статические данные, они не будут разделяться между ними. Это может быть или не быть тем, что вы хотите. –

Смежные вопросы