应用程序中两个不同版本的库

时间:2019-07-09 07:29:20

标签: c++ c linux shared-libraries static-libraries

请考虑一个场景,其中有两个不同版本的共享库。请考虑将A.1.so链接到B.so,将A.2.so链接到C.so.现在B.so和C.so都链接到d.exe了。当B.so想要在A.1.so中调用函数时,最终在A.2.so中调用函数。因此,它给我们带来了不确定的行为。

现在我希望我的B.so仅调用A.1.so.我只能修改A.1.so和B.so,没有别的。使用dlopen()是一种选择,但是对于使用dlopen(),我必须在B.so中进行重大更改。堆栈溢出中前面给出了许多解决方案,但是似乎没有任何效果。请注意,我只能在A.1.so和B.so中进行代码更改。

dlopen()以外,是否还有其他解决方案。我在下面提到了一些链接。

1 个答案:

答案 0 :(得分:0)

您可以将所有代码包装在A1.cpp的{​​{1}}中并向namespace A1添加using namespace A1吗? B.cppA1.cpp是指B.cppA1.so的所有相关翻译单元。