#include #include #include #include int main(int argc, char **argv) { void *handle; int (*pmlib)(); char *error; int i; handle = dlopen("./pmlib.so", RTLD_LAZY); if (!handle) { fprintf(stderr, "%s\n", dlerror()); exit(1); } dlerror(); pmlib = (int (*)(int)) dlsym(handle, "pmlib"); error = dlerror(); if (error != NULL) { fprintf(stderr, "%s\n", error); exit(1); } printf("Calling pmlib()...\n"); i = (*pmlib)(); sleep(1); printf("pmlib() returned %d!\n", i); sleep(1); printf("main() done!\n"); return dlclose(handle); }