DL
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! :-)
Constants
ALIGN_CHAR = Document-const
ALIGN_DOUBLE = Document-const
ALIGN_FLOAT = Document-const
ALIGN_INT = Document-const
ALIGN_LONG = Document-const
ALIGN_LONG_LONG = Document-const
ALIGN_SHORT = Document-const
ALIGN_VOIDP = Document-const
BUILD_RUBY_PLATFORM = Document-const
BUILD_RUBY_VERSION = Document-const
CdeclCallbackAddrs = {}
CdeclCallbackProcs = {}
DLSTACK_SIZE = Document-const
MAX_CALLBACK = Document-const
RTLD_GLOBAL = Document-const: RTLD_GLOBAL\n\nrtld DL:
RTLD_LAZY = Document-const: RTLD_LAZY\n\nrtld DL:
RTLD_NOW = Document-const: RTLD_NOW\n\nrtld DL:
RUBY_FREE = Document-const
SEM = Mutex.new # :nodoc:
SIZEOF_CHAR = Document-const
SIZEOF_DOUBLE = Document-const
SIZEOF_FLOAT = Document-const
SIZEOF_INT = Document-const
SIZEOF_LONG = Document-const
SIZEOF_LONG_LONG = Document-const
SIZEOF_SHORT = Document-const
SIZEOF_VOIDP = Document-const
StdcallCallbackAddrs = {}
StdcallCallbackProcs = {}
TYPE_CHAR = Document-const: TYPE_CHAR\n\nDL:
TYPE_DOUBLE = Document-const: TYPE_DOUBLE\n\nDL:
TYPE_FLOAT = Document-const: TYPE_FLOAT\n\nDL:
TYPE_INT = Document-const: TYPE_INT\n\nDL:
TYPE_LONG = Document-const: TYPE_LONG\n\nDL:
TYPE_LONG_LONG = Document-const: TYPE_LONG_LONG\n\nDL:
TYPE_SHORT = Document-const: TYPE_SHORT\n\nDL:
TYPE_VOID = Document-const: TYPE_VOID\n\nDL:
TYPE_VOIDP = Document-const: TYPE_VOIDP\n\nDL:
Files
- ext/dl/dl.c
- ext/dl/lib/dl.rb
- ext/dl/lib/dl/callback.rb
- ext/dl/lib/dl/cparser.rb
- ext/dl/lib/dl/func.rb
- ext/dl/lib/dl/import.rb
- ext/dl/lib/dl/pack.rb
- ext/dl/lib/dl/stack.rb
- ext/dl/lib/dl/struct.rb
- ext/dl/lib/dl/types.rb
- ext/dl/lib/dl/value.rb