我有一个 c 语言主程序 dlopening 一个名为 A 的共享库,然后 dlopened 一个名为 B 的库。它运行良好。然后我想在 A & B 中添加一些常用的日志函数 calss。
首先,我将 main 中日志函数的实现或定义替换为 A 和 B 引用。它工作正常。
但是,由于我无法更改主源文件,我将定义放在 A 的库中。主程序在 A 尝试 dlopen B 时失败,dlerror 显示日志函数符号不是为 B 找到。所以看起来 A 中的函数定义对 B 是不可见的。为什么?将定义放在 main.
中的情况有什么区别我既不能更改主源文件,也不能更改 dlopen 链。如何正确定义日志函数?