Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > dlライブラリ > DLモジュール

module DL

クラスの継承リスト: DL

要約

UNIX の dlopen(3) や Windows の LoadLibrary() などのダイナミックリンカへの低レベルなインターフェースを提供するモジュールです。

モジュール関数

dlopen(lib) -> DL::Handle
dlopen(lib) {|handle| ... } -> DL::Handle

ダイナミックライブラリ lib をロードし、 DL::Handle として返します。

ブロックが与えられている場合は、DL::Handle 引数として 与えられたブロックを実行します。DL::Handle を返します。

DL::Handle.new(lib) と等価です。

[PARAM] lib:
ロードしたいライブラリを文字列で与えます。
[EXCEPTION] RuntimeError:
dlopen(3) に失敗した時に発生します。
dlunwrap(addr) -> object

指定されたアドレスの Ruby オブジェクトを返します。

[PARAM] addr:
DL.#dlwrap が返した Ruby オブジェクトのアドレス(整数)を指定します。

例:

require 'dl'
s = 'abc'
p addr = DL.dlwrap(s)   #=> 136122440
p DL.dlunwrap(addr)     #=> "abc"
dlwrap(obj) -> Integer

指定されたオブジェクト obj のアドレスを表す整数を返します。

[PARAM] obj:
Ruby のオブジェクトを指定します。

例:

require 'dl'
s = 'abc'
p addr = DL.dlwrap(s)   #=> 136122440
p DL.dlunwrap(addr)     #=> "abc"
free(addr) -> nil

指定された addr が指すメモリ領域を開放します。

必ず DL.#malloc が返した整数を addr に与えなければいけません。 そうでない場合、ruby インタプリタが異常終了します。

[PARAM] addr:
DL.#malloc で確保されたメモリ領域を指す整数を指定します。

例:

require 'dl'
addr = DL.malloc(10)
p addr               #=> 136942800
DL.free(addr)
malloc(size) -> Integer

size バイトのメモリ領域を確保し、その領域を指す整数を返します。

メモリを確保できなかった場合、例外 NoMemoryError が発生するか、あるいは ruby インタプリタが強制終了します。

[PARAM] size:
必要なメモリ領域のサイズを整数で指定します。
realloc(addr, size) -> Integer

[TODO]

定数

ALIGN_CHAR
ALIGN_DOUBLE
ALIGN_FLOAT
ALIGN_INT
ALIGN_LONG
ALIGN_LONG_LONG
ALIGN_SHORT
ALIGN_VOIDP
BUILD_RUBY_PLATFORM
BUILD_RUBY_VERSION
CdeclCallbackAddrs
CdeclCallbackProcs
DLSTACK_SIZE
MAX_CALLBACK
NULL
RTLD_GLOBAL
RTLD_LAZY
RTLD_NOW
RUBY_FREE
SIZEOF_CHAR
SIZEOF_DOUBLE
SIZEOF_FLOAT
SIZEOF_INT
SIZEOF_LONG
SIZEOF_LONG_LONG
SIZEOF_SHORT
SIZEOF_VOIDP
StdcallCallbackAddrs
StdcallCallbackProcs
TYPE_CHAR
TYPE_DOUBLE
TYPE_FLOAT
TYPE_INT
TYPE_LONG
TYPE_LONG_LONG
TYPE_SHORT
TYPE_VOID
TYPE_VOIDP

変数の型を表す定数です。unsigned char などを表したい場合は - を付けて

- TYPE_CHAR

などとします。

module DL