Я связываюсь с двумя разными общими библиотеками. Обе библиотеки определяют некоторые символы, которые имеют общее имя, но имеют разные реализации. Я не могу заставить каждую библиотеку использовать свою собственную реализацию над другой.
Например, обе библиотеки определяют глобальную функцию bar()
, которую каждая вызывает внутри. Библиотека 1 вызывает его из foo1()
, а библиотека 2 вызывает его из foo2()
.
Lib1.so:
T bar
T foo1() // calls bar()
Lib2.so:
T bar
T foo2() // calls bar()
Если я связываю свое приложение с Lib1.so, а затем с Lib2.so, вызывается реализация bar из Lib1.so даже при вызове foo2()
. С другой стороны, если я связываю свое приложение с Lib2.so, а затем с Lib1.so, то бар всегда вызывается из Lib2.so.
Есть ли способ заставить библиотеку всегда предпочитать ее собственную реализацию над любой другой библиотекой?