方法 : C# DLL を作成して使用する (C# プログラミング ガイド)
更新 : 2007 年 11 月
ダイナミック リンク ライブラリ (DLL) は、実行時にプログラムにリンクされます。DLL のビルド例、使用例として、次に示すシナリオを考えてみます。
MathLibrary.DLL: 実行時に呼び出されるメソッドが収められているライブラリ ファイルです。この例では、DLL には 2 つのメソッド Add と Multiply が含まれています。
Add.cs: メソッド Add(long i, long j) が入っているソース ファイルです。このメソッドは、パラメータの和を返します。メソッド Add を含むクラス AddClass は、名前空間 UtilityMethods のメンバです。
Mult.cs: メソッド Multiply(long x, long y) のソース コードです。このメソッドは、パラメータの積を返します。メソッド Multiply を含むクラス MultiplyClass も、名前空間 UtilityMethods のメンバです。
TestCode.cs: Main メソッドを含むファイルです。DLL ファイルのメソッドを使って、実行時引数の和と積を計算します。
使用例
// File: Add.cs
namespace UtilityMethods
{
public class AddClass
{
public static long Add(long i, long j)
{
return (i + j);
}
}
}
// File: Mult.cs
namespace UtilityMethods
{
public class MultiplyClass
{
public static long Multiply(long x, long y)
{
return (x * y);
}
}
}
// File: TestCode.cs
using UtilityMethods;
class TestCode
{
static void Main(string[] args)
{
System.Console.WriteLine("Calling methods from MathLibrary.DLL:");
if (args.Length != 2)
{
System.Console.WriteLine("Usage: TestCode <num1> <num2>");
return;
}
long num1 = long.Parse(args[0]);
long num2 = long.Parse(args[1]);
long sum = AddClass.Add(num1, num2);
long product = MultiplyClass.Multiply(num1, num2);
System.Console.WriteLine("{0} + {1} = {2}", num1, num2, sum);
System.Console.WriteLine("{0} * {1} = {2}", num1, num2, product);
}
}
/* Output (assuming 1234 and 5678 are entered as command line args):
Calling methods from MathLibrary.DLL:
1234 + 5678 = 6912
1234 * 5678 = 7006652
*/
このファイルには、DLL のメソッド Add と Multiply を使用するアルゴリズムが入っています。最初に、コマンド ラインから入力された引数 num1 と num2 を解析します。次に、AddClass クラスの Add メソッドを使って和を計算し、MultiplyClass クラスの Multiply メソッドを使って積を計算します。
ファイルの先頭で using ディレクティブを指定すると、コンパイル中に非修飾クラス名を使って DLL メソッドを参照できます。次はその例です。
MultiplyClass.Multiply(num1, num2);
ディレクティブを指定しない場合は、完全修飾名を使用する必要があります。次はその例です。
UtilityMethods.MultiplyClass.Multiply(num1, num2);
実行
プログラムを実行するには、EXE ファイルの名前に続けて 2 つの数値を入力します。次はその例です。
TestCode 1234 5678
コードのコンパイル方法
MathLibrary.DLL ファイルを作成するには、次のコマンド ラインを使って Add.cs と Mult.cs をコンパイルします。
csc /target:library /out:MathLibrary.DLL Add.cs Mult.cs
/target:library コンパイラ オプションを指定すると、コンパイラは EXE ファイルではなく DLL ファイルを出力します。/out コンパイラ オプションで指定されたファイル名が、DLL のファイル名になります。このオプションを指定しないと、コンパイラは最初のファイル名 (Add.cs) を DLL の名前として使います。
実行可能ファイル TestCode.exe を作成するには、次のコマンド ラインを使用します。
csc /out:TestCode.exe /reference:MathLibrary.DLL TestCode.cs
ここでの /out コンパイラ オプションでは、EXE ファイルを出力するようにコンパイラに指示し、出力ファイルの名前 (TestCode.exe) を指定しています。このコンパイラ オプションは省略できます。/reference コンパイラ オプションは、このプログラムが使用する DLL ファイルを指定します。