如何调用运行时已知类型的函数

How to call a function with types known at runtime

本文关键字:类型 函数 运行时 何调用 调用      更新时间:2024-05-23

加载动态库和GetProcAddress后,通常会得到类型为void*的函数指针。要调用该函数,在编译时执行时,需要将指针强制转换为所需的正确指针类型。

但是,如果在编译时不知道该类型,而是在运行时知道,那么该类型有很多可能性。在这种情况下,似乎需要手动"调用"函数,也就是根据ABI更新堆栈和寄存器。

问题是:在通用平台和ABI中,是否有任何开源代码可以解决这一问题?如果没有,我该如何自己实现?

微软abi文档在cdecl和其他约定上有一些内容,32位和64位似乎有所不同。Linux上的ABI是相同的还是其他的?

在另一个答案中,我说过https://dyncall.org/看起来是需要的。

这个答案被删除了,尽管评论说它是正确的。在这里重新张贴信息,以防其他人需要。