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