Guest User

Untitled

a guest
Oct 25th, 2017
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 0.64 KB | None | 0 0
  1. {.passL: "-rdynamic".}
  2. import dynlib
  3.  
  4. type
  5.   setupProc = proc () {.nimcall.}
  6.   callProc = proc () {.nimcall.}
  7.  
  8.  
  9. var
  10.   dll: LibHandle
  11.   setup: setupProc
  12.   call: callProc
  13.   theValue = 2
  14.  
  15. proc myProc(): string =
  16.   theValue += 1
  17.   return "Something cool"
  18.  
  19. dll = loadLib("./liblib.so")
  20. if dll != nil:
  21.   let setupAddr = dll.symAddr("setup")
  22.   if setupAddr != nil:
  23.     setup = cast[setupProc](setupAddr)
  24.   let callAddr = dll.symAddr("call")
  25.   if callAddr != nil:
  26.     call = cast[callProc](callAddr)
  27.  
  28. if setup != nil:
  29.   setup()
  30.   call()
  31.   call()
  32.   call()
  33.   echo theValue
  34. else:
  35.   echo "Wasn't able to load setup() from DLL."
Add Comment
Please, Sign In to add comment