繁体   English   中英

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

[英]How can I call a library function just from its name?

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

不。您可以使用dlopendlsym ,也可以创建自己的函数名称和函数指针数组,然后以这种方式查找它。

除非您有权访问函数名称和加载地址,否则您将无法执行此操作。 您可以在Windows中使用LoadLibrary()GetProcAddress()来执行此操作。

就您而言,我不知道您到底有什么可用(您没有提到平台,编译器等),或者这是否可行。 但是,我强烈怀疑事实并非如此。

按名称调用函数的常用方法是使用名称和函数指针表。 该技术的一个警告是,这些功能必须全部具有相同的签名。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM