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