被 dlopen 的共享库无法访问外部共享库中定义的函数,只有 dlopening 它

问题描述 投票:0回答:0

我有一个 c 语言主程序 dlopening 一个名为 A 的共享库,然后 dlopened 一个名为 B 的库。它运行良好。然后我想在 A & B 中添加一些常用的日志函数 calss。

首先,我将 main 中日志函数的实现或定义替换为 A 和 B 引用。它工作正常。

但是,由于我无法更改主源文件,我将定义放在 A 的库中。主程序在 A 尝试 dlopen B 时失败,dlerror 显示日志函数符号不是为 B 找到。所以看起来 A 中的函数定义对 B 是不可见的。为什么?将定义放在 main.

中的情况有什么区别

我既不能更改主源文件,也不能更改 dlopen 链。如何正确定义日志函数?

c shared-libraries dlopen undefined-symbol
© www.soinside.com 2019 - 2024. All rights reserved.