【发布时间】:2014-12-08 12:17:13
【问题描述】:
我有两个共享库:a.so 和 b.so。
a.so 必须在 b.so 加载之前加载。而且,a.so 可能由其他模块加载,而不是由我加载。
所以,我想在调用dlopen("b.so", ...)之前确定是否已经加载了a.so。
在 Windows 下,我可以使用 GetModuleHandle("a.dll") 通过检查返回值来确定。即如果返回值不为null,则a.dll已经加载;否则还没有加载。
Linux下有类似GetModuleHandle的功能吗?
【问题讨论】:
-
为什么不是你在加载
a.so时自己设置的布尔变量? -
@JoachimPileborg,a.so 可能被其他模块加载,而不是我。
-
那为什么不干脆让
b.so依赖a.so,这样系统会在b.so加载的时候自动加载a.so呢? -
@JoachimPileborg,这确实是一个解决方案。但是我还是想知道一个so在运行时的加载状态。
标签: c linux windows dll shared-libraries