如何从名称中调用库函数?

时间:2011-02-09 18:48:54

标签: c

我希望能够使用char *function_name = "foo"从C程序中调用foo()foo()例程将位于共享库中。我没有访问任何dlopen等,只是常规可执行文件的加载步骤。有没有办法解析此名称并从共享库中加载它?

3 个答案:

答案 0 :(得分:5)

没有。您可以使用dlopendlsym,也可以创建自己的函数名称和函数指针数组,并以此方式查找。

答案 1 :(得分:2)

除非您可以访问功能名称和加载地址,否则无法执行此操作。您可以使用Windows中的LoadLibrary()GetProcAddress()来执行此操作。

在您的情况下,我不确切知道您的可用内容(您没有提及您的平台,编译器等)或者这是否可行。然而,我强烈怀疑它不是。

答案 2 :(得分:0)

通过名称调用函数的常用方法是使用名称和函数指针表。对这种技术的一个警告是,函数必须都具有相同的签名。

如果您知道名称功能但函数签名不同,则必须使用if-then-else梯形图。