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

How to call a function with types known at runtime

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

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

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

Microsoft abi 文档中有一些关于 cdecl 和其他约定的内容,而且 32 位和 64 位似乎有所不同。 Linux 上的 ABI 是相同的还是其他?

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

该答案已被删除,尽管评论说它是正确的。在此重新发布信息,以防其他人需要。