loadso.nim
System dependent library loading routines.
Some things to keep in mind:
- These procedures only work on C function names. Other languages may
have name mangling and intrinsic language support that varies from compiler to compiler.
- Make sure you declare your function pointers with the same calling
convention as the actual library function. Your code will crash mysteriously if you do not do this.
- Avoid namespace collisions. If you load a symbol from the library,
it is not defined whether or not it goes into the global symbol namespace for the application. If it does and it conflicts with symbols in your code or other shared libraries, you will not get the results you expect. :)
Procs
proc loadObject*(sofile: cstring): pointer {...}{.cdecl, importc: "SDL_LoadObject", dynlib: SDL2_LIB.}
- This procedure dynamically loads a shared object and returns a pointer to the object handle (or nil if there was an error). The sofile parameter is a system dependent name of the object file.
proc loadFunction*(handle: pointer; name: cstring): pointer {...}{.cdecl, importc: "SDL_LoadFunction", dynlib: SDL2_LIB.}
- Given an object handle, this procedure looks up the address of the named function in the shared object and returns it. This address is no longer valid after calling unloadObject().
proc unloadObject*(handle: pointer) {...}{.cdecl, importc: "SDL_UnloadObject", dynlib: SDL2_LIB.}
- Unload a shared object from memory.