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故障。