gpt4 book ai didi

C/海湾合作委员会 : dlopen() without needing dlsym()

转载 作者:太空狗 更新时间:2023-10-29 12:33:48 26 4
gpt4 key购买 nike

我可以使用 dlopen() 和 RTLD_NOW 延迟加载共享库.但是一旦库被动态加载,我仍然需要使用 dlsym 来单独加载每个符号。

由于我的库包含大量 API,我不想为所有 API 调用 dlsym。有什么方法可以使 API 以与正常加载时链接相同的方式工作(您只需调用 API 而无需 dlsym)?

最佳答案

您可能正在寻找 RTLD_GLOBAL。

从您链接到的页面[1]:

RTLD_GLOBAL
The symbols defined by this library will be made available for
symbol resolution of subsequently loaded libraries.

通过使用它,您应该能够围绕您的 API 创建一个不需要使用 dlsym() 的“包装器”库,并以这种方式减少所需的 dlsym() 调用总数。这当然会引发一个问题,即维护包装器库是否比清理 API 更费力。

[1] http://man7.org/linux/man-pages/man3/dlsym.3.html

关于C/海湾合作委员会 : dlopen() without needing dlsym(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18756999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com