我尝试使用dlopen
加载带有标记RTLD_NODELETE
的动态库,以便保留全局变量,并确保在下次使用dlopen
时不会重新启动它们重装它。
但是当我想在库中的某些函数更新时重新加载库时,
dlopen
(在重新加载之前我称之为接口dlclose
)似乎不起作用。这些函数使用相同的旧代码运行。
所以我现在很困惑。
使用dlopen
重新加载时,如何将全局变量保留在动态库中。
(更新函数但保持变量不变。)
答案 0 :(得分:0)
所以我现在很困惑。
这正是RTLD_NODELETE
的含义:dlclose
在这样的库上(实际上)是无操作。由于代码有效的行为就好像从未调用过dlclose
一样,因此后续的dlopen
不会重新加载代码也就不足为奇了(它也实际上变成了无操作。)
当使用dlopen重新加载时,如何在动态库中保留全局变量。 (更新功能但不改变virables)
你不能。