參考資訊:
https://stackoverflow.com/questions/29285546/when-do-so-files-get-loaded-linux
dl.c
#include <stdio.h>
void hello(void)
{
printf("Hello, world!\n");
}
main.c
#include <stdio.h>
#include <dlfcn.h>
typedef void hello(void);
int main(int argc, char **argv)
{
void* h = dlopen("./hello.so", RTLD_NOW);
hello *p = dlsym(h, "hello");
p();
dlclose(h);
return 0;
}
編譯、執行
$ gcc dl.c -shared -o hello.so
$ gcc main.c -o main -ldl
$ ./main
Hello, world!
P.S. 當執行dlopen()失敗時,可以呼叫dlerror()取得失敗的原因