「DLL」の版間の差分

imported>MikeCAT
作成
 
imported>Fallout New Tokyo
 
(2人の利用者による、間の3版が非表示)
1行目: 1行目:
'''DLL'''とは、[[Windows]]においてよく使う機能を[[ライブラリ]]にし、一個のファイルにしたものである。
'''DLL'''(読み:でぃーえるえる、語源:Dynamic Link Library)とは、[[Windows]]においてよく使う機能を[[ライブラリ]]にし、一個の[[ファイル]]にしたものである。
 
== 概要 ==
かつて[[コンピューター]]の[[リソース]]が乏しかった時代、複数の[[プログラム]]でひとつの[[ライブラリ]]を共有しようという夢のような概念が生まれた。
誰もが絶賛した。
 
だが、その先にあったのは[[DLL地獄]]であった。
 
人々は奪い合い、殺し合い、混沌だけが残った。


==DLLの使い方==
==DLLの使い方==
test.dllのint test(int a)という関数を利用することを考える。
test.dllのint test(int a)という関数を利用することを考える。


静的リンクの利点はプログラムが簡単になることだが、欠点はDLLがないと起動できなくなることなので、
[[静的リンク]]の利点は[[プログラム]]が簡単になることだが、欠点はDLLがないと起動できなくなることなので、
拡張機能を提供するには向かない。
拡張機能を提供するには向かない。


逆に、動的リンクの利点はDLLがなくてもプログラム内でエラー処理をすればいいことだが、
逆に、[[動的リンク]]の利点はDLLがなくてもプログラム内で[[エラー処理]]をすればいいことだが、
プログラムが若干複雑になるという欠点がある。
プログラムが若干複雑になるという欠点がある。
===[[C言語]]===
===[[C言語]]===
====静的リンク====
====静的リンク====
1.インポートライブラリを作成する
1.[[インポートライブラリ]]を作成する
<pre>&gt;pexports test.dll > test.def
<pre>&gt;pexports test.dll > test.def
&gt;dlltool --dllname test.dll --input-def test.def --output-lib libtest.a</pre>
&gt;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#]]を使用しても拡張子が.dllのファイルは作れるようだが、ここで扱うDLLとは別物のようである。
=== .NET Framework ====
[[Visual Studio|Visual C#]]を使用しても[[拡張子]]が.dllの[[ファイル]]は作れるようだが、ここで扱うDLLとは別物である。
 
[[.NET Framework]]における.dllファイルは[[エントリポイント]]を持たない[[共通中間言語]]の[[バイナリ]]表現であり、従来のDLLとはまったくの別物である。紛らわしいことに[[拡張子]]が一緒だがまったくの別物である。
 
ここだけの話、.NET Frameworkの.exeファイルは.dllファイルのように扱える。
 
===C言語===
===C言語===
<source lang="c">
<source lang="c">