「DLL」の版間の差分
imported>MikeCAT 作成 |
imported>Fallout New Tokyo |
||
| (2人の利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
'''DLL''' | '''DLL'''(読み:でぃーえるえる、語源:Dynamic Link Library)とは、[[Windows]]においてよく使う機能を[[ライブラリ]]にし、一個の[[ファイル]]にしたものである。 | ||
== 概要 == | |||
かつて[[コンピューター]]の[[リソース]]が乏しかった時代、複数の[[プログラム]]でひとつの[[ライブラリ]]を共有しようという夢のような概念が生まれた。 | |||
誰もが絶賛した。 | |||
だが、その先にあったのは[[DLL地獄]]であった。 | |||
人々は奪い合い、殺し合い、混沌だけが残った。 | |||
==DLLの使い方== | ==DLLの使い方== | ||
test.dllのint test(int a)という関数を利用することを考える。 | test.dllのint test(int a)という関数を利用することを考える。 | ||
[[静的リンク]]の利点は[[プログラム]]が簡単になることだが、欠点はDLLがないと起動できなくなることなので、 | |||
拡張機能を提供するには向かない。 | 拡張機能を提供するには向かない。 | ||
逆に、[[動的リンク]]の利点はDLLがなくてもプログラム内で[[エラー処理]]をすればいいことだが、 | |||
プログラムが若干複雑になるという欠点がある。 | プログラムが若干複雑になるという欠点がある。 | ||
===[[C言語]]=== | ===[[C言語]]=== | ||
====静的リンク==== | ====静的リンク==== | ||
1. | 1.[[インポートライブラリ]]を作成する | ||
<pre>>pexports test.dll > test.def | <pre>>pexports test.dll > test.def | ||
>dlltool --dllname test.dll --input-def test.def --output-lib libtest.a</pre> | >dlltool --dllname test.dll --input-def test.def --output-lib libtest.a</pre> | ||
| 118行目: | 126行目: | ||
result=test(a) | result=test(a) | ||
Print result</pre> | Print result</pre> | ||
===[[なでしこ]]=== | |||
<pre>●test(a)=DLL("test.dll","int test(int a)") | |||
「aを入力してください。」で数値入力。 | |||
引数はそれを整数変換。 | |||
test(引数)をいう。</pre> | |||
==DLLの作り方== | ==DLLの作り方== | ||
[[Visual Studio|Visual C#]] | === .NET Framework ==== | ||
[[Visual Studio|Visual C#]]を使用しても[[拡張子]]が.dllの[[ファイル]]は作れるようだが、ここで扱うDLLとは別物である。 | |||
[[.NET Framework]]における.dllファイルは[[エントリポイント]]を持たない[[共通中間言語]]の[[バイナリ]]表現であり、従来のDLLとはまったくの別物である。紛らわしいことに[[拡張子]]が一緒だがまったくの別物である。 | |||
ここだけの話、.NET Frameworkの.exeファイルは.dllファイルのように扱える。 | |||
===C言語=== | ===C言語=== | ||
<source lang="c"> | <source lang="c"> | ||