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

module DL

クラスの継承リスト: DL

要約

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

目次

特異メソッド
fiddle?
モジュール関数
dlopen dlunwrap dlwrap free malloc realloc
定数
ALIGN_CHAR ALIGN_DOUBLE ALIGN_FLOAT ALIGN_INT ALIGN_LONG ALIGN_LONG_LONG ALIGN_SHORT ALIGN_VOIDP BUILD_RUBY_PLATFORM BUILD_RUBY_VERSION 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 TYPE_CHAR TYPE_DOUBLE TYPE_FLOAT TYPE_INT TYPE_LONG TYPE_LONG_LONG TYPE_SHORT TYPE_VOID TYPE_VOIDP

特異メソッド

fiddle? -> bool[permalink][rdoc]

DL 内部で fiddle を利用するならば真を返します。

モジュール関数

dlopen(lib) -> DL::Handle[permalink][rdoc]
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[permalink][rdoc]

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

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

例:

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

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

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

例:

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

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

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

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

例:

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

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

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

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

addr で指定したメモリ領域を size バイトにリサイズし、その領域を指す整数 を返します。

addr には DL.malloc で確保したメモリ領域を渡します。 また、リサイズの結果、返り値が addr と異なる場合があります。

[PARAM] addr:
リサイズしたいメモリアドレス整数
[PARAM] size:
リサイズ後のバイト数

[SEE_ALSO] DL.malloc

定数

ALIGN_CHAR -> Integer[permalink][rdoc]

C の構造体における char のアライメントの値。

ALIGN_DOUBLE -> Integer[permalink][rdoc]

C の構造体における double のアライメントの値。

ALIGN_FLOAT -> Integer[permalink][rdoc]

C の構造体における float のアライメントの値。

ALIGN_INT -> Integer[permalink][rdoc]

C の構造体における int のアライメントの値。

ALIGN_LONG -> Integer[permalink][rdoc]

C の構造体における long のアライメントの値。

ALIGN_LONG_LONG -> Integer[permalink][rdoc]

C の構造体における long long のアライメントの値。

ALIGN_SHORT -> Integer[permalink][rdoc]

C の構造体における short のアライメントの値。

ALIGN_VOIDP -> Integer[permalink][rdoc]

C の構造体における void* のアライメントの値。

BUILD_RUBY_PLATFORM -> String[permalink][rdoc]

ビルドに用いた ruby のプラットフォームを表す文字列。

通常、Object::RUBY_PLATFORM と同じ。

BUILD_RUBY_VERSION -> String[permalink][rdoc]

ビルドに用いた ruby のバージョンを表す文字列。

通常、Object::RUBY_VERSION と同じ。

NULL -> DL::CPtr[permalink][rdoc]

C の NULL ポインタ

RTLD_GLOBAL -> Integer[permalink][rdoc]

dlopen のフラグ RTLD_GLOBAL を表す定数です。

DL::Handle.new の flags として用います。

詳しくは dlopen(3) を見てください。

RTLD_LAZY -> Integer[permalink][rdoc]

dlopen のフラグ RTLD_LAZY を表す定数です。

DL::Handle.new の flags として用います。

詳しくは dlopen(3) を見てください。

RTLD_NOW -> Integer[permalink][rdoc]

dlopen のフラグ RTLD_NOW を表す定数です。

DL::Handle.new の flags として用います。

詳しくは dlopen(3) を見てください。

RUBY_FREE -> Integer[permalink][rdoc]

ruby_xfree の関数ポインタのアドレスの値。

SIZEOF_CHAR -> Integer[permalink][rdoc]

Cでの sizeof(char) の値

SIZEOF_DOUBLE -> Integer[permalink][rdoc]

Cでの sizeof(double) の値

SIZEOF_FLOAT -> Integer[permalink][rdoc]

Cでの sizeof(float) の値

SIZEOF_INT -> Integer[permalink][rdoc]

Cでの sizeof(int) の値

SIZEOF_LONG -> Integer[permalink][rdoc]

Cでの sizeof(long) の値

SIZEOF_LONG_LONG -> Integer[permalink][rdoc]

Cでの sizeof(long long) の値

SIZEOF_SHORT -> Integer[permalink][rdoc]

Cでの sizeof(short) の値

SIZEOF_VOIDP -> Integer[permalink][rdoc]

Cでの sizeof(void*) の値

TYPE_CHAR -> Integer[permalink][rdoc]

C の char 型を表す定数。

unsigned char を表すには符号を逆転させます。

TYPE_DOUBLE -> Integer[permalink][rdoc]

C の double 型を表す定数。

TYPE_FLOAT -> Integer[permalink][rdoc]

C の float 型を表す定数。

TYPE_INT -> Integer[permalink][rdoc]

C の int 型を表す定数。

unsigned int を表すには符号を逆転させます。

TYPE_LONG -> Integer[permalink][rdoc]

C の long 型を表す定数。

unsigned long を表すには符号を逆転させます。

TYPE_LONG_LONG -> Integer[permalink][rdoc]

C の long long 型を表す定数。

unsigned long long を表すには符号を逆転させます。

TYPE_SHORT -> Integer[permalink][rdoc]

C の short 型を表す定数。

unsigned short を表すには符号を逆転させます。

TYPE_VOID -> Integer[permalink][rdoc]

C の void を表す定数。

TYPE_VOIDP -> Integer[permalink][rdoc]

C の void* 型を表す定数。