3
我构建了一个共享库,它公开了一个函数指针数组。函数定义也在这个库中,但它们不会被导出。C中共享库的访问指针
是否有可能从另一个程序加载该库并直接使用导出的指针调用这些函数?
这就是我想要做的。
我的图书馆:
#include <stdio.h>
void myfun(){
printf("myfun\n");
}
extern void (*myptr)() = myfun;
我试图用这样的:
#include <dlfcn.h>
int main(){
void * lib = dlopen("libt1.so", RTLD_NOW);
if(!lib) { printf("%s\n", dlerror()); return 0; }
void (*myptr)() = (void (*)()) dlsym(lib, "myptr");
if(!myptr){ printf("%s\n", dlerror()); return 0; }
printf("%p\n", myptr);
myptr();
}
这给出了一个SEGM故障。