2010-10-14 6 views
0

Supposons que j'ai 2 libs statiques S1 et S2 qui sont des versions différentes de la même lib et ont la même interface C (non C++) bien que les implémentations soient différentes. 2 bibliothèques partagées D1 et D2 chacune d'entre elles liée à S1 ou S2 uniquement. Supposons une application A liens avec S2 qui est le plus récent des bibliothèques statiques et charge dynamiquement à la fois D1 et D2 avec dlopen. Est-ce que D1 utilisera les fonctions S1 s ou est-il possible de l'utiliser pour utiliser les fonctions S2? Quelque chose peut-il aller mal dans cette configuration?Résolution de symbole d'objet partagé

EDIT: Est-ce un objet partagé S une bonne façon de contourner ce problème D1 et D2 peut à la fois lien S alors?

Répondre

0

Est-ce D1 il suffit d'utiliser les fonctions de S1 ou est-il possible de l'appliquer à utiliser les fonctions de S2?

Oui, D1 utilisera les fonctions S1. Non, vous ne pouvez pas l'appliquer pour utiliser les fonctions S2.

Est-ce que quelque chose ne va pas dans cette configuration?

Cela dépend de ce qui se trouve dans vos bibliothèques.

+0

Que voulez-vous dire par ce qui se trouve dans les bibliothèques? Ce n'est pas clair pour moi. – nakiya

+0

Je veux dire que cela dépend de ce qui se trouve dans 'S1' et' S2'. Si elles ont des données statiques globales par exemple, elles ne seront pas partagées entre les deux. Cela peut ou peut ne pas être ce que vous voulez. –