请考虑一个场景,其中有两个不同版本的共享库。请考虑将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()
以外,是否还有其他解决方案。我在下面提到了一些链接。
答案 0 :(得分:0)
您可以将所有代码包装在A1.cpp
的{{1}}中并向namespace A1
添加using namespace A1
吗?
B.cpp
和A1.cpp
是指B.cpp
和A1.so
的所有相关翻译单元。