浏览代码

Merge pull request #526 from sci4me/unix-dynlib

Implement dynlib core library for unix/darwin
gingerBill 5 年之前
父节点
当前提交
4578544007
共有 2 个文件被更改,包括 22 次插入0 次删除
  1. 21 0
      core/dynlib/lib_unix.odin
  2. 1 0
      core/dynlib/lib_windows.odin

+ 21 - 0
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;
+}

+ 1 - 0
core/dynlib/lib_windows.odin

@@ -1,3 +1,4 @@
+// +build windows
 package dynlib
 
 import "core:sys/win32"