让我们说我的可执行文件MyApp动态链接到so文件boost-system.so。我编译,一切都运行良好一段时间;我对boost系统函数的调用就是他们应该做的事情。
过了一会儿,我意识到我需要链接到另一个so文件,SomeAPI.so。然而,SomeAPI.so与boost-system.a静态链接,但是一个较旧的,错误的版本,其功能与“my”boost-system(ofcourse)完全相同。现在,ALL调用(来自MyApp和SomeAPI)将转到静态链接的版本SomeAPI(或者我的升级系统版本,具体取决于链接顺序,两者都对我不利)。
我希望MyApp的呼叫转到我的boost-system版本,而SomeAPI则使用其静态链接的boost-system.a函数。在Windows上,这就是它的工作原理。
我意识到为什么没有发生这种情况,但除了将“my”boost-system中的名称空间重命名为本地名称之外,还有什么方法吗?