[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ダイナミックリンクライブラリ(DLL)を構築し使用するのに必要なファイルを
作成するために,dlltool
は使用されます.
dlltool
は,DLLをサポートするターゲットに対してのみ役に立つの
で,常にバイナリユーティリティの一部として構築されるわけではありません.
dlltool [`-d'|`--input-def' def-file-name] [`-b'|`--base-file' base-file-name] [`-e'|`--output-exp' exports-file-name] [`-z'|`--output-def' def-file-name] [`-l'|`--output-lib' library-file-name] [`--export-all-symbols'] [`--no-export-all-symbols'] [`--exclude-symbols' list] [`--no-default-excludes'] [`-S'|`--as' path-to-assembler] [`-f'|`--as-flags' options] [`-D'|`--dllname' name] [`-m'|`--machine' machine] [`-a'|`--add-indirect'] [`-U'|`--add-underscore'] [`-k'|`--kill-at'] [`-A'|`--add-stdcall-alias'] [`-x'|`--no-idata4'] [`-c'|`--no-idata5'] [`-i'|`--interwork'] [`-n'|`--nodelete'] [`-v'|`--verbose'] [`-h'|`--help'] [`-V'|`--version'] [object-file ...] |
dlltool
は,その入力を読み込み,それは,コマンドラインで指定
されたオブジェクトファイルと,`-d'と`-b'オプションから成
り立ちます.そして,これらの入力を処理し,`-e'オプションが指定
されている場合はエクスポートファイルを作成します.`-l'オプショ
ンが指定されている場合は,ライブラリファイルを作成し,`-z'オプ
ションが指定されている場合は,defファイルを作成します.`-e',
`-l',そして`-z'オプションのいずれか,またはすべてを,
dlltool
の呼び出しに配置することが可能です.
DLLを作成しているとき,DLLのソースファイルとともに,それは三つの他のファ
イルが必要です.dlltool
は,これらのファイルの作成を手助けす
ることが可能です.
最初のファイルは,DLLからエクスポートされる関数や,DLLがインポートする
関数等を指定する,`.def'ファイルです.これはテキストファイルで,
手動で作成したり,作成するためにdlltool
を`-z'オプショ
ンを用いて使用したりすることが可能です.この場合,dlltool
は,
エクスポートされるように特別に印の付けられたこれらの関数を探しながら,
コマンドラインで指定されたオブジェクトファイルを走査し,作成する
`.def'ファイルにそれらのエントリーを書き出します.
DLLからエクスポートされるように関数に印を付けるため,オブジェクトファ イルの`.drectve'セクションに,`-export:<name_of_function>' エントリーが必要です.これは,Cでasm()演算子を使用することで可能となり ます.
asm (".section .drectve"); asm (".ascii \"-export:my_func\""); int my_func (void) { ... } |
DLLの作成に必要とされる二番目のファイルは,エクスポートファイルです.
このファイルは,DLL本体を作成し,DLLと外部世界の間のインターフェースを
取り扱うオブジェクトファイルとリンクされます.これはバイナリファイルで,
dlltool
が`.def'ファイルの作成または読み込みをしていると
きに,それに`-e'オプションを与えると作成されます.
DLLの作成に必要とされる三番目のファイルは,DLL内の関数にアクセスするた
めにプログラムとリンクするライブラリファイルです.このファイルは,
dlltool
が`.def'ファイルの作成または読み込みをしていると
きに,それに`-l'オプションを与えると作成されます.
dlltool
は,手動でライブラリファイルを構築しますが,それは,
アセンブラ宣言を含む一時ファイルを作成し,それをアセンブルすることで,
エクスポートファイルを構築します.`-S'コマンドラインオプション
は,dlltool
が使用するアセンブラへのパスを指定するため使用す
ることが可能で,`-f'オプションは,そのアセンブラに特別なフラグ
を渡すために使用することが可能です.`-n'は,dlltool
が
これらの一時的なアセンブラファイルを終了後に削除することを防ぐために使
用することが可能で,`-n'が二回指定されている場合は,
dlltool
がライブラリを構築するために使用した,一時的なオブジェ
クトファイルが削除されることを防ぎます.
ソースファイル`dll.c'からDLLを作成し,そのDLLを使用しているプログ ラムも(`program.o'という名前のオブジェクトファイルから)作成してい る例は以下のようになります.
gcc -c dll.c dlltool -e exports.o -l dll.lib dll.o gcc dll.o exports.o -o dll.dll gcc program.o dll.lib -o program |
コマンドラインオプションには以下の意味があります.
-d filename
--input-def filename
-b filename
--base-file filename
dlltool
で生成されるエクスポートファイルの,再配置のセク
ションが追加されます.
-e filename
--output-exp filename
dlltool
で作成される,`.def'ファイルの名前を指定します.
-z filename
--output-def filename
dlltool
で作成される,`.def'ファイルの名前を指定します.
-l filename
--output-lib filename
dlltool
で作成される,ライブラリファイルの名前を指定します.
--export-all-symbols
--no-export-all-symbols
--exclude-symbols list
--no-default-excludes
-S path
--as path
-f options
--as-flags options
-D name
--dll-name name
-m machine
-machine machine
dlltool
には,構築のされ方に依存するデフォルト形式があります
が,このオプションで,それに優先させることが可能です.これは通常,ARM
プロセッサに対するDLLを作成するときのみ役に立ち,DLLの内容は,実際に
Thumb命令を使用して符号化されます.
-a
--add-indirect
dlltool
がエクスポートファイルを作成しているとき,エクスポー
ト関数がインポートライブラリを使用しないで参照できるように,セクション
を加えることを指定します.たとえ,それが地獄を意味しようとも!
-U
--add-underscore
dlltool
エクスポートファイルを作成しているとき,エクスポート
関数の名前にアンダースコアを前置することを指定します.
-k
--kill-at
dlltool
エクスポートファイルを作成しているとき,文字列
`@ <number>'を追加しないことを指定します.これらの数字は,序数と
呼ばれ,DLL では関数にアクセスする一つの方法を表示し,それ以外では名前
で表示します.
-A
--add-stdcall-alias
dlltool
がエクスポートファイルを作成しているとき,シンボルに
`@ <number>'を追加したものを,`@ <number>'なしでstdcallシ
ンボルの別名を加えることを指定します.
-x
--no-idata4
dlltool
エクスポートファイルとライブラリファイルを作成してい
るとき,.idata4
セクションを削除することを指定します.これは,あ
るオペレーティングシステムとの互換性のためです.
-c
--no-idata5
dlltool
エクスポートファイルとライブラリファイルを作成してい
るとき,.idata5
セクションを削除することを指定します.これは,あ
るオペレーティングシステムとの互換性のためです.
-i
--interwork
dlltool
が,生成しているライブラリファイルとエクスポートファ
イル内のオブジェクトに,ARMとThumb間での相互動作をサポートするように印
を付けることを指定します.
-n
--nodelete
dlltool
が,エクスポートファイルを作成するために使用した一時
的なアセンブラファイルを保存するようにします.このオプションが繰り返さ
れる場合,dlltool
は,ライブラリを作成するために使用する一時
的なオブジェクトファイルも保存します.
-v
--verbose
dlltool
が,行っていることを記述します.
-h
--help
-V
--version
dlltool
のバージョンナンバーを表示し終了します.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |