This module implements the ability to access symbols from shared libraries. On POSIX this uses the
dlsym mechanism, on Windows
LoadLibrary.
TLibHandle = pointer
-
a handle to a dynamically loaded library
proc raiseInvalidLibrary(name: cstring) {.noinline, noreturn,
raises: [EInvalidLibrary], tags: [].}
-
raises an EInvalidLibrary exception.
proc checkedSymAddr(lib: TLibHandle; name: cstring): pointer {.
raises: [E_Base, EInvalidLibrary], tags: [TEffect].}
-
retrieves the address of a procedure/variable from lib. Raises EInvalidLibrary if the symbol could not be found.
proc loadLib(path: string; global_symbols = false): TLibHandle {.raises: [],
tags: [].}
-
loads a library from path. Returns nil if the library could not be loaded.
proc loadLib(): TLibHandle {.raises: [], tags: [].}
-
gets the handle from the current executable. Returns nil if the library could not be loaded.
proc unloadLib(lib: TLibHandle) {.raises: [], tags: [].}
-
unloads the library lib
proc symAddr(lib: TLibHandle; name: cstring): pointer {.raises: [], tags: [].}
-
retrieves the address of a procedure/variable from lib. Returns nil if the symbol could not be found.