我希望能够使用char *function_name = "foo"
从C程序中调用foo()
。 foo()
例程将位于共享库中。我没有访问任何dlopen等,只是常规可执行文件的加载步骤。有没有办法解析此名称并从共享库中加载它?
答案 0 :(得分:5)
没有。您可以使用dlopen
和dlsym
,也可以创建自己的函数名称和函数指针数组,并以此方式查找。
答案 1 :(得分:2)
除非您可以访问功能名称和加载地址,否则无法执行此操作。您可以使用Windows中的LoadLibrary()
和GetProcAddress()
来执行此操作。
在您的情况下,我不确切知道您的可用内容(您没有提及您的平台,编译器等)或者这是否可行。然而,我强烈怀疑它不是。
答案 2 :(得分:0)
通过名称调用函数的常用方法是使用名称和函数指针表。对这种技术的一个警告是,函数必须都具有相同的签名。
如果您知道名称功能但函数签名不同,则必须使用if-then-else
梯形图。