방법: C# DLL 만들기 및 사용(C# 프로그래밍 가이드)

업데이트: 2007년 11월

DLL(동적 연결 라이브러리)은 런타임에 프로그램으로 링크됩니다. DLL 빌드 및 사용을 설명하기 위해서 다음과 같은 시나리오를 가정합니다.

  • MathLibrary.DLL: 런타임에 호출될 메서드가 포함된 라이브러리 파일입니다. 이 예제의 DLL에는 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        
*/

이 파일에는 Add 및 Multiply DLL 메서드를 사용하는 알고리즘이 있습니다. 이 알고리즘은 먼저 명령줄에 입력된 인수인 num1 및 num2를 구문 분석합니다. 그런 다음 AddClass 클래스의 Add 메서드를 사용하여 합을 계산하고 MultiplyClass 클래스의 Multiply 메서드를 사용하여 곱을 계산합니다.

파일의 시작 부분에 using 지시문을 사용하면 다음과 같이 정식 클래스 이름이 아닌 경우에도 컴파일 타임에 DLL 메서드를 참조할 수 있습니다.

MultiplyClass.Multiply(num1, num2);

지시문을 사용하지 않았으면 다음과 같이 정규화된 이름을 사용해야 합니다.

UtilityMethods.MultiplyClass.Multiply(num1, num2);

실행

프로그램을 실행하려면 다음과 같이 EXE 파일 이름과 두 개의 숫자를 입력합니다.

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 파일을 지정합니다.

참고 항목

작업

방법: DLL 기준 주소 지정

개념

C# 프로그래밍 가이드

DLL 함수가 포함된 클래스 만들기