如何使用 dlsym() 调用函数,如果我不知道返回类型和参数

How to invoke a function using dlsym(), if i am unaware about return type and parameters?

本文关键字:我不知道 如果 返回类型 参数 函数 dlsym 何使用 调用      更新时间:2023-10-16

我必须调用外部库中的函数,该函数的参数类型和数量以及返回类型未知。如何使用 dlsym 在 c++ 中调用该函数?

编辑:如果我将参数的返回类型和数据类型作为字符串获取,如何使用 dlsym() 调用函数。

例如:客户端将 func 名称、返回类型和参数数据类型发送到服务器。 服务器动态加载相应的 所以使用 DLOPEN()。现在如何使用 dlsym 调用 func?

提前致谢

如果您有已知数量的参数组合及其类型可以传递给相关函数,则可以根据此信息实现调用,并在运行时解析包含要传递的参数的类型和顺序的字符串,然后跳转到相应调用的实现。

如果您事先不知道要传递给相关函数的参数的可能类型和顺序,则无法调用它。

C 不进行即席编译,因此需要在编译时(即构建可执行文件时)知道每个调用的参数及其类型。

如果我不知道返回类型和参数,如何使用 dlsym() 调用函数?

那你就不能了。如果您尝试猜测这些,则通过指向不兼容函数类型的指针调用函数将导致未定义的行为。

相关文章: