lib_unix.odin 540 B

123456789101112131415161718192021
  1. // +build linux, darwin
  2. package dynlib
  3. import "core:os"
  4. load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
  5. flags := os.RTLD_NOW;
  6. if global_symbols do flags |= os.RTLD_GLOBAL;
  7. lib := os.dlopen(path, flags);
  8. return Library(lib), lib != nil;
  9. }
  10. unload_library :: proc(library: Library) {
  11. os.dlclose(rawptr(library));
  12. }
  13. symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
  14. ptr = os.dlsym(rawptr(library), symbol);
  15. found = ptr != nil;
  16. return;
  17. }