程式語言 - GNU - C/C++ - Load Share Library



參考資訊:
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()取得失敗的原因