so文件:从另一个so文件调用的函数
so files: function called from another so file than intended
比方说,我的可执行文件MyApp与so文件boost-system.so动态链接。我编译了一段时间,一切都很好;我对提升系统功能的调用做了它们应该做的事情。
过了一段时间,我意识到我需要链接到另一个so文件,SomeAPI.so。然而,SomeAPI.so已经静态链接到了boost system.a,但它是一个旧的、有缺陷的版本,它的功能与"我的"boost系统的名称完全相同(当然)。现在,所有调用(来自MyApp和SomeAPI)都将转到静态链接的SomeAPI版本(或者我的boost系统版本,取决于链接顺序,两者对我都不好)。
我希望我从MyApp调用到我的boost系统版本,SomeAPI使用其静态链接的boost system.a函数。在Windows上,它就是这样工作的。
我知道为什么没有发生这种情况,但除了将"我的"boost系统中的名称空间重命名为本地名称空间之外,还有其他方法吗?
使用LD版本脚本来隐藏您不希望其他.so文件看到的函数名。
相关文章:
- 如何使用ndk-build.cmd构建Android.so文件
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 用于构建 cuda .so 文件(共享库)的生成文件
- 无法从 SO 文件调用 SO 文件的函数 - C++生成文件
- 如何在 C++ 的 .so 文件中包含库
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- Google Colab 看不到 .so 文件
- 如何在 Linux 中从 .so 文件打开可执行文件?
- 如何在makefile中包含tensorflow c ++".so"文件?
- 缺少 .h 文件,尽管从库文件夹链接了 .so 文件
- 如何在 CMake 超级生成中查找 dll/so 文件
- 如何用.so文件linux打包所有需要的库
- 如何调试visual studio 2017生成的C++代码.android中的SO文件和其他第三方库
- 从多个C++文件生成 .so 文件并使用它
- .so 文件无法"see"编译时使用的库
- 从 .so/.o 文件中获取 C/cpp 中的静态库列表
- 在Windows上运行Linux Makefile(.so文件)
- 如何静态链接到 POCO C++ so 文件
- C++ .so 文件中的模板化函数
- 卸载共享对象(.so 文件)在 C++ 中用 dlopen() 打开