0

我曾尝试使用dlopen该标志加载动态库,RTLD_NODELETE以保留全局变量并确保下次我使用dlopen重新加载它时不会重新启动它们。

但是当我想在库中的某些函数更新时重新加载库时,dlopen(在重新加载之前我调用了接口dlclose)似乎不起作用。这些函数使用相同的旧代码运行。

所以我现在很困惑。

dlopen使用重新加载时如何将全局变量保留在动态库中。(更新函数但保持变量不变。)

4

1 回答 1

0

所以我现在很困惑。

这正是RTLD_NODELETE意味着:dlclose在这样的库上(实际上)是无操作的。由于代码实际上表现得好像dlclose从未被调用过,因此后续dlopen也不会重新加载代码也就不足为奇了(它实际上变成了无操作)。

使用 dlopen 重新加载时,如何将全局变量保留在动态库中。(更新功能但保持病毒不变)

你不能。

于 2013-08-29T06:36:22.277 回答