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

标签 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 进行重大更改。 Stack Overflow 前面给出了很多解决方案,但似乎都没有用。请注意,我只能在 A.1.so 和 B.so 中更改代码。

除了 dlopen() 之外,是否还有其他解决此问题的方法。我在下面提到了一些链接。

最佳答案

你能把A1.cpp中的所有代码包装在namespace A1中,并添加一个using namespace A1B.cpp? 通过 A1.cppB.cpp 我的意思是 A1.soB.so 的所有相关翻译单元>.

关于c++ - 应用程序中两个不同版本的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56947406/

相关文章:

c++ - 使用强 typedef 作为 Boost Parameter 库的更轻量级替代方案?

创建线程并将结构传递给它

c - 我怎样才能接受一个以上的文本文件?

linux - 如何在perl中开发一个脚本,可以递归删除子文件夹和父目录中的数据?

android - 这个脚本实际上做了什么?

linux - 在守护进程模式下限制 rsync

c++ - 在 C++ 中按完整路径打开文件

指向 vector 元素的 C++ 指针,元素已删除

c++ - 使用 lambda 删除器返回唯一指针时可能出现悬空引用

c - 使用时间戳计数器测量内存延迟