我必须调用外部库中的函数,其类型和参数数量以及返回类型未知。如何使用 dlsym 在 C++ 中调用该函数?
编辑:如果我将参数的返回类型和数据类型作为字符串获取,我如何使用 dlsym() 调用函数。
eg:客户端将函数名称、返回类型和参数数据类型发送给服务器。服务器使用 dlopen() 动态加载相应的 so。现在我如何使用 dlsym 调用 func?
提前致谢
如果您有已知数量的参数组合及其可能传递给相关函数的类型,您可以根据此信息实现调用,并在运行时解析包含要传递的参数的类型和顺序的字符串然后跳转到执行相应的调用。
如果您事先不知道要传递给相关函数的参数的可能类型和顺序,则不可能调用它。
C 不进行临时编译,因此每个调用的参数及其类型都需要在编译时知道,即在构建可执行文件时。
如果我不知道返回类型和参数,如何使用 dlsym() 调用函数?
那你不能。如果您尝试猜测这些,那么通过指向不兼容函数类型的指针调用函数将导致未定义的行为。