#include #include typedef int(*export_fn)(); int main() { void* lib_handle = dlopen("./shared.so", RTLD_LAZY); if(!lib_handle){ printf("ERROR: %s\n", dlerror()); return 1; } export_fn foo = (export_fn)dlsym(lib_handle, "shared_foo"); if(!foo){ printf("ERROR: %s\n", dlerror()); return 1; } export_fn bar = (export_fn)dlsym(lib_handle, "shared_bar"); if(!bar){ printf("ERROR: %s\n", dlerror()); return 1; } puts("Calling foo\n"); foo(); puts("Calling bar\n"); bar(); puts("All success\n"); dlclose(lib_handle); return 0; }