lib_unix.odin 561 B

1234567891011121314151617181920212223
  1. // +build linux, darwin, freebsd, openbsd
  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 {
  7. flags |= os.RTLD_GLOBAL
  8. }
  9. lib := os.dlopen(path, flags)
  10. return Library(lib), lib != nil
  11. }
  12. unload_library :: proc(library: Library) {
  13. os.dlclose(rawptr(library))
  14. }
  15. symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
  16. ptr = os.dlsym(rawptr(library), symbol)
  17. found = ptr != nil
  18. return
  19. }