| #include <dlfcn.h> |
| #include <error.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| int |
| main (void) |
| { |
| void *h; |
| int (*fp) (int); |
| int res; |
| |
| h = dlopen ("${ORIGIN}/testobj1.so", RTLD_LAZY); |
| if (h == NULL) |
| error (EXIT_FAILURE, 0, "while loading `%s': %s", "testobj1.so", |
| dlerror ()); |
| |
| fp = dlsym (h, "obj1func1"); |
| if (fp == NULL) |
| error (EXIT_FAILURE, 0, "getting `obj1func1' in `%s': %s", |
| "testobj1.so", dlerror ()); |
| |
| res = fp (10); |
| printf ("fp(10) = %d\n", res); |
| |
| if (dlclose (h) != 0) |
| error (EXIT_FAILURE, 0, "while close `%s': %s", |
| "testobj1.so", dlerror ()); |
| |
| return res != 42; |
| } |
| |
| |
| extern int foo (int a); |
| int |
| foo (int a) |
| { |
| return a + 10; |
| } |