C 指向函数指针的未定义引用
我不熟悉这个话题。我试图在我的c代码中动态链接一个共享库,但我得到一个错误C 指向函数指针的未定义引用,c,dll,linker,function-pointers,C,Dll,Linker,Function Pointers,我不熟悉这个话题。我试图在我的c代码中动态链接一个共享库,但我得到一个错误 undefined reference to `func' 我在网上搜索了一下,没有发现我的语法有任何错误 void *handle; int (*func)(char **); handle = dlopen(argv[0], RTLD_LOCAL | RTLD_LAZY); *(int **)&func = dlsym(handle, pluggin_method->FunctionName); //
undefined reference to `func'
我在网上搜索了一下,没有发现我的语法有任何错误
void *handle;
int (*func)(char **);
handle = dlopen(argv[0], RTLD_LOCAL | RTLD_LAZY);
*(int **)&func = dlsym(handle, pluggin_method->FunctionName); //I might need to pass a string by first using strcpy
int func_ret_val = (func)(argv); //execute function
我正把头撞在墙上想弄明白。有什么帮助吗?代码中是否有以下语句:
#include <dlfcn.h>
#包括
您是否在链接语句中包含-ldl
库>
如果从dlopen()
返回的值为空,则调用dlerror()
以获取结果错误消息
注意:dlopen()
加载库并返回库的“不透明”句柄,而不是指向实际函数的指针
成功调用dlopen()后,需要调用dlsym()
,以获取函数内存中的实际地址
检查
dlsym()
(!=NULL)返回的值,以确保操作成功在哪里实现func
?您确定知道自己在做什么吗?请提供一个示例并说明您想要完成的任务。.func的实现因不同的共享库而异。我正在构建一个shell,允许用户加载新插件并签出。。。强制转换通常以“另一种方式”完成:func=(int(*)(char**))dlsym(…)代码>。