Gewusst wie: Erstellen und Verwenden von C#-DLLs (C#-Programmierhandbuch)
Aktualisiert: November 2007
Zur Laufzeit ist das Programm mit einer Dynamic Linking Library (DLL) verknüpft. Um die Erstellung und Verwendung einer DLL zu veranschaulichen, wird folgendes Szenario verwendet:
MathLibrary.DLL: Die Bibliotheksdatei, die die zur Laufzeit aufzurufenden Methoden enthält. In diesem Beispiel enthält die DLL zwei Methoden: Add und Multiply.
Add.cs: Die Quelldatei, die die Add(long i, long j)-Methode enthält. Sie gibt die Summe ihrer Parameter zurück. Die AddClass-Klasse, die die Add-Methode enthält, ist ein Member des UtilityMethods-Namespaces.
Mult.cs: Der Quellcode, der die Multiply(long x, long y)-Methode enthält. Er gibt das Produkt seiner Parameter zurück. Die MultiplyClass-Klasse, die die Multiply-Methode enthält, ist ebenfalls ein Member des UtilityMethods-Namespaces.
TestCode.cs: Die Datei, die die Main-Methode enthält. Sie verwendet die Methoden in der DLL-Datei, um die Summe und das Produkt der Laufzeitargumente zu berechnen.
Beispiel
// 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
*/
Diese Datei enthält den Algorithmus, der die DLL-Methoden Add und Multiply verwendet. Er beginnt mit der Analyse der Argumente num1 und num2, die aus der Befehlszeile stammen. Anschließend wird die Summe berechnet, indem die Add-Methode auf die AddClass-Klasse angewendet wird, und dann das Produkt, indem die Multiply-Methode auf die MultiplyClass-Klasse angewendet wird.
Durch die using-Direktive am Anfang der Datei können Sie während der Kompilierungszeit die nicht qualifizierten Klassennamen als Referenz auf die DLL-Methoden folgendermaßen verwenden:
MultiplyClass.Multiply(num1, num2);
Andernfalls müssen Sie die vollqualifizierten Namen wie folgt verwenden:
UtilityMethods.MultiplyClass.Multiply(num1, num2);
Ausführung
Um das Programm auszuführen, geben Sie den Namen der EXE-Datei, gefolgt von zwei Zahlen, folgendermaßen ein:
TestCode 1234 5678
Kompilieren des Codes
Um die Datei MathLibrary.DLL zu erstellen, kompilieren Sie die beiden Dateien Add.cs und Mult.cs mit folgender Befehlszeile:
csc /target:library /out:MathLibrary.DLL Add.cs Mult.cs
Mit der /target:library-Compileroption wird der Compiler angewiesen, eine DLL-Datei statt einer EXE-Datei auszugeben. Die /out-Compileroption, gefolgt von einem Dateinamen, wird zur Angabe des Namens der DLL-Datei verwendet. Andernfalls wird vom Compiler die erste Datei (Add.cs) als Name der DLL verwendet.
Zum Erstellen der ausführbaren Datei TestCode.exe verwenden Sie die folgende Befehlszeile:
csc /out:TestCode.exe /reference:MathLibrary.DLL TestCode.cs
Mit der /out-Compileroption wird der Compiler angewiesen, eine EXE-Datei auszugeben, und der Name der Ausgabedatei (TestCode.exe) wird festgelegt. Diese Compileroption kann optional verwendet werden. Mit der /reference-Compileroption werden die DLL-Dateien festgelegt, die von diesem Programm verwendet werden.
Siehe auch
Aufgaben
Gewusst wie: Angeben einer Basisadresse für eine DLL