Я создал общую библиотеку, которая предоставляет массив указателей на функции. Определения функций также есть в этой библиотеке, но они не экспортируются.
Возможно ли из другой программы загрузить эту библиотеку и вызвать эти функции напрямую, используя экспортированные указатели?
Это то, что я пытаюсь сделать.
Моя библиотека:
#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.