gpt4 book ai didi

c - 如何使用 dlsym() 调用一个函数,我知道参数的数量但不知道类型,也不知道函数的返回类型?

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:30 25 4
gpt4 key购买 nike

我正在尝试使用 dlsym 和 dlopen 创建一个通用工具,目的是加载外部库并从中调用特定函数。我当前的工具代码是:

void bootload(string libraryname, string functionname, int argc, char** argv) {
void *handle;
char *error;

handle = dlopen(libraryname.c_str(), RTLD_LAZY);

if (!handle) {
fprintf(stderr, "%s\n", dlerror());
exit(EXIT_FAILURE);
} else {
cout << "\nSuccessfuly opened " << libraryname << endl;
}

dlerror();

typedef void (*bootload_t)();
bootload_t bl_function = (bootload_t) dlsym(handle, functionname.c_str());

if ((error = dlerror()) != NULL) {
fprintf(stderr, "%s\n", error);
exit(EXIT_FAILURE);
}

bl_function();
dlclose(handle);
}

现在 argc 和 argv 将分别包含函数 functionname 的参数的数量和实例。

如何通过传递正确的参数并返回正确的类型来正确调用 functionname?

一些帮助将不胜感激。

最佳答案

How do I invoke a function using dlsym() where I know the number of arguments but not the type and neither the return type of the function?

你不知道。如果您不知道参数的类型,不可能传递函数期望的参数。

关于c - 如何使用 dlsym() 调用一个函数,我知道参数的数量但不知道类型,也不知道函数的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20949776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com