dl.pp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. Unit dl;
  2. Interface
  3. Const
  4. {$ifdef BSD} // dlopen is in libc on FreeBSD.
  5. LibDL = 'c';
  6. {$else}
  7. LibDL = 'dl';
  8. {$endif}
  9. RTLD_LAZY = $001;
  10. RTLD_NOW = $002;
  11. RTLD_BINDING_MASK = $003;
  12. RTLD_GLOBAL = $100;
  13. RTLD_NEXT = pointer(-1);
  14. {$ifdef LINUX}
  15. RTLD_DEFAULT = nil;
  16. {$endif}
  17. {$ifdef BSD}
  18. RTLD_DEFAULT = pointer(-2);
  19. RTLD_MODEMASK = RTLD_BINDING_MASK;
  20. {$endif}
  21. type
  22. Pdl_info = ^dl_info;
  23. dl_info =
  24. record
  25. dli_fname : Pchar;
  26. dli_fbase : pointer;
  27. dli_sname : Pchar;
  28. dli_saddr : pointer;
  29. end;
  30. Function dlopen(Name : PChar; Flags : longint) : Pointer; cdecl; external libdl;
  31. FUnction dlsym(Lib : Pointer; Name : Pchar) : Pointer; cdecl; external Libdl;
  32. Function dlclose(Lib : Pointer) : Longint; cdecl; external libdl;
  33. Function dlerror() : Pchar; cdecl; external libdl;
  34. { overloaded for compatibility with hmodule }
  35. FUnction dlsym(Lib : PtrInt; Name : Pchar) : Pointer; cdecl; external Libdl;
  36. Function dlclose(Lib : PtrInt) : Longint; cdecl; external libdl;
  37. function dladdr(Lib: pointer; info: Pdl_info): Longint; cdecl; external; platform;
  38. implementation
  39. end.