Je fais le lien avec deux bibliothèques partagées différentes. Les deux bibliothèques définissent certains symboles qui partagent un nom mais ont des implémentations différentes. Je ne peux pas faire en sorte que chaque bibliothèque utilise sa propre implémentation plutôt que celle de l'autre.
Par exemple, les deux bibliothèques définissent une fonction globale bar()
que chacun appelle en interne. La première bibliothèque l'appelle depuis foo1()
et la deuxième bibliothèque l'appelle à partir de foo2()
.
Lib1.so :
T bar
T foo1() // calls bar()
Lib2.so :
T bar
T foo2() // calls bar()
Si je lie mon application à Lib1.so et ensuite à Lib2.so, l'implémentation de la barre de Lib1.so est appelée même lorsque je fais appel à foo2()
. Si, par contre, je lie mon application à Lib2.so et ensuite à Lib1.so, alors bar est toujours appelé depuis Lib2.so.
Existe-t-il un moyen de faire en sorte qu'une bibliothèque préfère toujours sa propre implémentation à toute autre bibliothèque ?