I enlace con dos bibliotecas compartidas diferentes. Ambas bibliotecas definen algunos símbolos que comparten un nombre pero tienen implementaciones diferentes. No puedo hacer que cada biblioteca use su propia implementación sobre la otra.Vinculación de dos bibliotecas compartidas con algunos de los mismos símbolos
Por ejemplo, ambas bibliotecas definen una función global bar()
que cada una de las llamadas internamente. La biblioteca uno lo llama desde foo1()
y la biblioteca dos lo llama desde foo2()
.
Lib1.so:
T bar
T foo1() // calls bar()
Lib2.so:
T bar
T foo2() // calls bar()
Si vinculo mi solicitud contra Lib1.so y luego Lib2.so la aplicación de barras de Lib1.so se llama incluso cuando llame al foo2()
. Si, por otro lado, vinculo mi aplicación con Lib2.so y luego con Lib1.so, entonces la barra siempre se llama desde Lib2.so.
¿Hay alguna manera de hacer que una biblioteca siempre prefiera su propia implementación por encima de cualquier otra biblioteca?
Hola, ¿puedes decirme si esto también se aplica al clang? –