[英]How can I call a library function just from its name?
我希望能够使用char *function_name = "foo"
从C程序调用foo()
。 foo()
例程将在共享库中。 我无权访问任何dlopen等,而只能访问常规可执行文件的加载步骤。 有什么办法可以解析此名称并从共享库中加载它?
不。您可以使用dlopen
和dlsym
,也可以创建自己的函数名称和函数指针数组,然后以这种方式查找它。
除非您有权访问函数名称和加载地址,否则您将无法执行此操作。 您可以在Windows中使用LoadLibrary()
和GetProcAddress()
来执行此操作。
就您而言,我不知道您到底有什么可用(您没有提到平台,编译器等),或者这是否可行。 但是,我强烈怀疑事实并非如此。
按名称调用函数的常用方法是使用名称和函数指针表。 该技术的一个警告是,这些功能必须全部具有相同的签名。
如果您知道函数名称,但函数签名不同,则必须使用if-then-else
梯形图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.