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