Condividi tramite


Procedura: creare e utilizzare DLL C# (Guida per programmatori C#)

Aggiornamento: novembre 2007

Una libreria a collegamento dinamico (DLL) viene collegata al programma in fase di esecuzione. Per dimostrare la compilazione e l'uso di una DLL, si consideri il seguente scenario:

  • MathLibrary.DLL: il file di libreria che contiene i metodi da chiamare in fase di esecuzione. In questo esempio, la DLL contiene due metodi, Add e Multiply.

  • Add.cs: il file di origine che contiene il metodo Add(long i, long j). Restituisce la somma dei propri parametri. La classe AddClass che contiene il metodo Add è un membro dello spazio dei nomi UtilityMethods.

  • Mult.cs: il codice sorgente che contiene il metodo Multiply(long x, long y). Restituisce il prodotto dei propri parametri. La classe MultiplyClass che contiene il metodo Multiply è anche un membro dello spazio dei nomi UtilityMethods.

  • TestCode.cs: il file che contiene il metodo Main. Utilizza i metodi nel file DLL per calcolare la somma e il prodotto degli argomenti in fase di esecuzione.

Esempio

// 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        
*/

Questo file contiene l'algoritmo che utilizza i metodi della DLL Add e Multiply. Inizia con l'analisi degli argomenti immessi dalla riga di comando, num1 e num2. Calcola quindi la somma utilizzando il metodo Add sulla classe AddClass e il prodotto utilizzando il metodo Multiply sulla classe MultiplyClass.

Si noti che la direttiva using all'inizio del file consente di utilizzare i nomi di classe non qualificati per fare riferimento ai metodi della DLL in fase di compilazione, ad esempio:

MultiplyClass.Multiply(num1, num2);

In caso contrario, è necessario utilizzare i nomi completi, ad esempio:

UtilityMethods.MultiplyClass.Multiply(num1, num2);

Esecuzione

Per eseguire il programma, immettere il nome del file EXE seguito da due numeri, ad esempio:

TestCode 1234 5678

Compilazione del codice

Per compilare il file MathLibrary.DLL, compilare i due file Add.cs e Mult.cs utilizzando la seguente riga di comando:

csc /target:library /out:MathLibrary.DLL Add.cs Mult.cs

L'opzione /target:library indica al compilatore di generare un file DLL e non un file EXE. L'opzione /out seguita da un nome di file è utilizzata per specificare il nome del file DLL. In sua assenza, il compilatore utilizza il primo file (Add.cs) come nome della DLL.

Per compilare il file eseguibile, TestCode.exe, utilizzare la seguente riga di comando:

csc /out:TestCode.exe /reference:MathLibrary.DLL TestCode.cs

L'opzione /out indica al compilatore di generare un file EXE e specifica il nome del file di output (TestCode.exe). Questa opzione del compilatore è facoltativa. L'opzione del compilatore /reference specifica i file DLL utilizzati dal programma.

Vedere anche

Attività

Procedura: specificare un indirizzo di base per una DLL

Concetti

Guida per programmatori C#

Creazione di una classe che contenga le funzioni di DLL