module DL
クラスの継承リスト: DL
要約
UNIX の dlopen(3) や Windows の LoadLibrary() などのダイナミックリンカへの低レベルなインターフェースを提供するモジュールです。
モジュール関数
dlopen(lib) -> DL::Handledlopen(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_CHARALIGN_DOUBLEALIGN_FLOATALIGN_INTALIGN_LONGALIGN_LONG_LONGALIGN_SHORTALIGN_VOIDPBUILD_RUBY_PLATFORMBUILD_RUBY_VERSIONCdeclCallbackAddrsCdeclCallbackProcsDLSTACK_SIZEMAX_CALLBACKNULLRTLD_GLOBALRTLD_LAZYRTLD_NOWRUBY_FREESIZEOF_CHARSIZEOF_DOUBLESIZEOF_FLOATSIZEOF_INTSIZEOF_LONGSIZEOF_LONG_LONGSIZEOF_SHORTSIZEOF_VOIDPStdcallCallbackAddrsStdcallCallbackProcsTYPE_CHARTYPE_DOUBLETYPE_FLOATTYPE_INTTYPE_LONGTYPE_LONG_LONGTYPE_SHORTTYPE_VOIDTYPE_VOIDP-
変数の型を表す定数です。unsigned char などを表したい場合は - を付けて
- TYPE_CHAR
などとします。
module DL