MAX_CALLBACK
Maximum number of callbacks
DLSTACK_SIZE
Dynamic linker stack size
RTLD_GLOBAL
rtld DL::Handle flag.
The symbols defined by this library will be made available for symbol resolution of subsequently loaded libraries.
RTLD_LAZY
rtld DL::Handle flag.
Perform lazy binding. Only resolve symbols as the code that references them is executed. If the symbol is never referenced, then it is never resolved. (Lazy binding is only performed for function references; references to variables are always immediately bound when the library is loaded.)
RTLD_NOW
rtld DL::Handle flag.
If this value is specified or the environment variable LD_BIND_NOW is set to a nonempty string, all undefined symbols in the library are resolved before dlopen() returns. If this cannot be done an error is returned.
TYPE_VOID
DL::CFunc type - void
TYPE_VOIDP
DL::CFunc type - void*
TYPE_CHAR
DL::CFunc type - char
TYPE_SHORT
DL::CFunc type - short
TYPE_INT
DL::CFunc type - int
TYPE_LONG
DL::CFunc type - long
TYPE_LONG_LONG
DL::CFunc type - long long
TYPE_FLOAT
DL::CFunc type - float
TYPE_DOUBLE
DL::CFunc type - double
TYPE_SIZE_T
DL::CFunc type - size_t
TYPE_SSIZE_T
DL::CFunc type - ssize_t
TYPE_PTRDIFF_T
DL::CFunc type - ptrdiff_t
TYPE_INTPTR_T
DL::CFunc type - intptr_t
TYPE_UINTPTR_T
DL::CFunc type - uintptr_t
ALIGN_VOIDP
The alignment size of a void*
ALIGN_CHAR
The alignment size of a char
ALIGN_SHORT
The alignment size of a short
ALIGN_INT
The alignment size of an int
ALIGN_LONG
The alignment size of a long
ALIGN_LONG_LONG
The alignment size of a long long
ALIGN_FLOAT
The alignment size of a float
ALIGN_DOUBLE
The alignment size of a double
ALIGN_SIZE_T
The alignment size of a size_t
ALIGN_SSIZE_T
The alignment size of a ssize_t
ALIGN_PTRDIFF_T
The alignment size of a ptrdiff_t
ALIGN_INTPTR_T
The alignment size of a intptr_t
ALIGN_UINTPTR_T
The alignment size of a uintptr_t
SIZEOF_VOIDP
size of a void*
SIZEOF_CHAR
size of a char
SIZEOF_SHORT
size of a short
SIZEOF_INT
size of an int
SIZEOF_LONG
size of a long
SIZEOF_LONG_LONG
size of a long long
SIZEOF_FLOAT
size of a float
SIZEOF_DOUBLE
size of a double
SIZEOF_SIZE_T
size of a size_t
SIZEOF_SSIZE_T
size of a ssize_t
SIZEOF_PTRDIFF_T
size of a ptrdiff_t
SIZEOF_INTPTR_T
size of a intptr_t
SIZEOF_UINTPTR_T
size of a uintptr_t
RUBY_FREE
Address of the ruby_xfree() function
BUILD_RUBY_PLATFORM
Platform built against (i.e. "x86_64-linux", etc.)
See also RUBY_PLATFORM
BUILD_RUBY_VERSION
Ruby Version built. (i.e. "1.9.3")
See also RUBY_VERSION
The mutual exclusion (Mutex) semaphore for the DL module
A Hash of callback Procs
Uses Fiddle
A Hash of the addresses of callback Proc
Uses Fiddle
A Hash of Stdcall callback Procs
Uses Fiddle on win32
A Hash of the addresses of Stdcall callback Procs
Uses Fiddle on win32
A bridge to the dlopen() or dynamic library linker function.
Example
bash $> cat > sum.c <<EOF double sum(double *arry, int len) { double ret = 0; int i; for(i = 0; i < len; i++){ ret = ret + arry[i]; } return ret; } double split(double num) { double ret = 0; ret = num / 2; return ret; } EOF bash $> gcc -o libsum.so -shared sum.c bash $> cat > sum.rb <<EOF require 'dl' require 'dl/import' module LibSum extend DL::Importer dlload './libsum.so' extern 'double sum(double*, int)' extern 'double split(double)' end a = [2.0, 3.0, 4.0] sum = LibSum.sum(a.pack("d*"), a.count) p LibSum.split(sum) EOF bash $> ruby sum.rb 4.5
WIN! :-)