gpt4 book ai didi

c - 如何通过名称获取函数地址?

转载 作者:太空狗 更新时间:2023-10-29 15:27:28 26 4
gpt4 key购买 nike

我想通过名称获取函数的地址。

例如,目前我正在使用dlsym:

unsigned long get_func_addr(const char *func_name)
{
return (unsigned long)dlsym(NULL, func_name);
}

但是,dlsym 仅适用于外部函数。它不适用于静态功能。我知道在不同的文件中可能有多个同名的静态函数。但我至少需要得到一个带有名称的静态函数的地址。有时会内置静态功能。但是如果C文件用debug编译就OK了。我认为使用 -g,静态函数的符号表是存在的,但我如何访问它?

我不想创建一个表来将字符串映射到函数地址。我需要找到一种动态执行此操作的方法。

最佳答案

如果不以某种方式创建一些可用于查找的外部文件,这实际上是不可能的……例如,正如您提到的,存在静态函数的符号表,但它是在编译/生成的链接时间......它不是从非编译代码模块访问的东西。

所以基本上你可以从编译和链接的可执行文件中生成符号表并将其导出为外部文件,然后有一个函数可以动态查找外部文件中的函数名称,该函数名称将提供获取地址所需的信息编译器和链接器将其编译/链接到的函数。

关于c - 如何通过名称获取函数地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7352100/

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