Partilhar via


Como: Criar e usar DLLs translation from VPE for Csharp (guia de programação translation from VPE for Csharp)

Uma biblioteca de vinculação dinâmica (DLL) está vinculada a seu programa em time de execução.Para demonstrar compilar e usar uma DLL, considere o seguinte cenário:

  • MathLibrary.DLL: O arquivo de biblioteca que contém os métodos sejam chamados em time de execução. Neste exemplo, a DLL contém dois métodos, Add e Multiply.

  • Add.cs: O arquivo de fonte que contém o método Add(long i, long j). Ele retorna a soma de seus parâmetros.A classe AddClass que contém o método Add é um membro do namespace UtilityMethods.

  • Mult.cs: O código-fonte que contém o método Multiply(long x, long y). Ele retorna o produto de seus parâmetros.A classe MultiplyClass que contém o método Multiply também é membro do espaço para nome UtilityMethods.

  • TestCode.cs: O arquivo que contém o Main método. Ele usa os métodos no arquivo de DLL para calcular a soma e o produto dos argumentos de time de execução.

Exemplo

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

Este arquivo contém o algoritmo que usa os métodos DLL, Add e Multiply. Ele começa com a analisar os argumentos inseridos a partir da linha de comando, num1 e num2. Calcula a soma usando o Add método na AddClass classe e o produto usando o Multiply método na MultiplyClass classe.

Observe que o using diretiva no início do arquivo permite que você use sistema autônomo nomes de classe não qualificado para fazer referência a métodos DLL em time de compilar, da seguinte maneira:

MultiplyClass.Multiply(num1, num2);

Caso contrário, você terá que usar nomes totalmente qualificados, sistema autônomo segue:

UtilityMethods.MultiplyClass.Multiply(num1, num2);

Execução

Para executar o programa, digite o nome do arquivo EXE, seguido de dois números, da seguinte maneira:

TestCode 1234 5678

Compilando o código

Para compilação o arquivo MathLibrary.DLL, compilar os dois arquivos Add.cs e Mult.cs usando a seguinte linha de comando:

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

The /destino:biblioteca opção do compilador informa o compilador para produzir saída de uma DLL em vez de um arquivo EXE.The /outopção do compilador seguida por um nome de arquivo é usada para especificar o nome do arquivo DLL.Caso contrário, o compilador usa o primeiro arquivo (Add.cs) sistema autônomo o nome da DLL.

Para compilação o arquivo executável, TestCode.exe, use a seguinte linha de comando:

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

The /out opção do compilador informa o compilador para produzir saída de um arquivo EXE e especifica o nome no (arquivo de saídaTestCode.exe). Esta opção do compilador é opcional.The /Referenceopção do compilador Especifica o arquivo DLL ou arquivos que usa este programa.

Consulte também

Tarefas

Como: Especificar um endereço base para uma DLL

Conceitos

Guia de Programação C#

Criando uma classe para manter as funções DLL