module

DL

v1_9_3_125 - Show latest stable

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