diff --git a/core/dynlib/lib_unix.odin b/core/dynlib/lib_unix.odin new file mode 100644 index 000000000..4eac9829d --- /dev/null +++ b/core/dynlib/lib_unix.odin @@ -0,0 +1,21 @@ +// +build linux, darwin +package dynlib + +import "core:os" + +load_library :: proc(path: string, global_symbols := false) -> (Library, bool) { + flags := os.RTLD_NOW; + if global_symbols do flags |= os.RTLD_GLOBAL; + lib := os.dlopen(path, flags); + return Library(lib), lib != nil; +} + +unload_library :: proc(library: Library) { + os.dlclose(rawptr(library)); +} + +symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) { + ptr = os.dlsym(rawptr(library), symbol); + found = ptr != nil; + return; +} \ No newline at end of file diff --git a/core/dynlib/lib_windows.odin b/core/dynlib/lib_windows.odin index bb45032da..cabd4b4cc 100644 --- a/core/dynlib/lib_windows.odin +++ b/core/dynlib/lib_windows.odin @@ -1,3 +1,4 @@ +// +build windows package dynlib import "core:sys/win32"