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