diff options
author | Euan T <euantorano@users.noreply.github.com> | 2018-03-21 10:30:58 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-21 10:30:58 +0000 |
commit | 9e0e099cc0cc9f9eef6489a1fc0d4e6041036f27 (patch) | |
tree | 9b56c660509aaddaf593f796858552d5e4d011cb /lib | |
parent | fc22627dbd9209e58fcc3f95e83650c9c0d8495c (diff) | |
download | Nim-9e0e099cc0cc9f9eef6489a1fc0d4e6041036f27.tar.gz |
Add an example to the `dynlib` module doc
Following a quesiton on Gitter about loading libraries dynamically based upon some runtime parameter, I noticed there's no documentation on the `dynlib` module for something that's quite common.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/dynlib.nim | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/pure/dynlib.nim b/lib/pure/dynlib.nim index fda41dadb..ec6cbb232 100644 --- a/lib/pure/dynlib.nim +++ b/lib/pure/dynlib.nim @@ -10,6 +10,49 @@ ## This module implements the ability to access symbols from shared ## libraries. On POSIX this uses the ``dlsym`` mechanism, on ## Windows ``LoadLibrary``. +## +## Examples +## -------- +## +## Loading a simple C function +## ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +## +## The following example demonstrates loading a function called 'greet' +## from a library that is determined at runtime based upon a language choice. +## If the library fails to load or the function 'greet' is not found, +## it quits with a failure error code. +## +## .. code-block::nim +## +## import dynlib +## +## type +## greetFunction = proc(): cstring {.gcsafe, stdcall.} +## +## let lang = stdin.readLine() +## +## let lib = case lang +## of "french": +## loadLib("french.dll") +## else: +## loadLib("english.dll") +## +## if lib == nil: +## echo "Error loading library" +## quit(QuitFailure) +## +## let greet = cast[greetFunction](lib.symAddr("greet")) +## +## if greet == nil: +## echo "Error loading 'greet' function from library" +## quit(QuitFailure) +## +## let greeting = greet() +## +## echo greeting +## +## unloadLib(lib) +## import strutils |