使用相同的符号链接两个共享库

我链接了两个不同的共享库。这两个库都定义了一些共享名称但具有不同实现的符号。我不能使每个库都使用自己的实现。


例如,两个库都定义了一个全局函数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,则即使调用,也会调用Lib1.so的bar实现foo2()。另一方面,如果我将应用程序链接到Lib2.so,然后链接到Lib1.so,则总是从Lib2.so调用bar。


有没有办法使一个库始终比其他任何库更喜欢其自己的实现?


Cats萌萌
浏览 979回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP