gpt4 book ai didi

linker - 如何实现符号版本控制

转载 作者:行者123 更新时间:2023-12-02 08:10:36 40 4
gpt4 key购买 nike

我想实现如下所示的目标:

我有一个库的多个版本。我使用 dlopen() 动态加载最新版本的库。然后我想查看该版本中是否存在特定函数(以及类似的返回类型和参数列表)。如果确实如此,则打开它,否则返回到以前的版本以检查相同的情况。

我看过一些关于“版本脚本”的帖子,但无法使用它。另外,我认为搜索符号表不会是一个解决方案,因为它只检查那里的函数名称。

最佳答案

符号版本控制的很好解释是 here 。您需要 GNU 扩展中的 dlvsym() 函数来按名称和版本搜索符号:

#define _GNU_SOURCE
#include <dlfcn.h>
void *dlvsym(void *handle, char *symbol, char *version);

函数 dlvsym() 的作用与 dlsym() 相同,但采用版本字符串作为附加参数。注意: C++ 符号名称应传递给 mangled form 中的 dlvsym()包含参数列表。不幸的是,GCC 损坏的名称(与 MSVC 不同)不包含返回类型。

有关更多信息,请参阅 "dlopen(3) - Linux man page" .

关于linker - 如何实现符号版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015367/

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