dlfcn.c 407 B

12345678910111213141516171819202122232425262728
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <dlfcn.h>
  4. int add(int a, int b)
  5. {
  6. return a + b;
  7. }
  8. int main()
  9. {
  10. void* handle = dlopen(NULL, RTLD_LAZY);
  11. if (!handle) {
  12. printf("dlopen(NULL) failed\n");
  13. exit(1);
  14. }
  15. int (*f)(int, int) = dlsym(handle, "add");
  16. if (!f) {
  17. printf("dlsym(handle, add) failed\n");
  18. exit(2);
  19. }
  20. int a = 22;
  21. int b = 33;
  22. printf("add(%d, %d) = %d\n", a, b, f(a, b));
  23. }