다음을 통해 공유


방법: 명령줄을 사용하여 어셈블리 만들기 및 사용(C# 및 Visual Basic)

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

  • MathLibrary.DLL: 런타임에 호출될 메서드가 포함된 라이브러리 파일입니다. 이 예제의 DLL에는 Add 메서드와 Multiply 메서드가 있습니다.

  • Add: Add 메서드가 포함된 소스 파일입니다. 이 메서드에서는 매개 변수의 합을 반환합니다. Add 메서드가 있는 AddClass 클래스는 UtilityMethods 네임스페이스의 멤버입니다.

  • Mult: Multiply 메서드가 포함된 소스 코드입니다. 이 메서드에서는 매개 변수의 곱을 반환합니다. Multiply 메서드가 있는 MultiplyClass 클래스도 UtilityMethods 네임스페이스의 멤버입니다.

  • TestCode: Main 메서드가 있는 파일입니다. 이 메서드에서는 DLL 파일의 메서드를 사용하여 런타임 인수의 합과 곱을 계산합니다.

예제

' File: Add.vb 
Namespace UtilityMethods
    Public Class AddClass
        Public Shared Function Add(ByVal i As Long, ByVal j As Long) As Long
            Return i + j
        End Function
    End Class
End Namespace


...


' File: Mult.vb
Namespace UtilityMethods
    Public Class MultiplyClass
        Public Shared Function Multiply(ByVal x As Long, ByVal y As Long) As Long
            Return x * y
        End Function
    End Class
End Namespace


...


' File: TestCode.vb

Imports UtilityMethods

Module Test

    Sub Main(ByVal args As String())


        System.Console.WriteLine("Calling methods from MathLibrary.DLL:")

        If args.Length <> 2 Then
            System.Console.WriteLine("Usage: TestCode <num1> <num2>")
            Return
        End If

        Dim num1 As Long = Long.Parse(args(0))
        Dim num2 As Long = Long.Parse(args(1))

        Dim sum As Long = AddClass.Add(num1, num2)
        Dim product As Long = MultiplyClass.Multiply(num1, num2)

        System.Console.WriteLine("{0} + {1} = {2}", num1, num2, sum)
        System.Console.WriteLine("{0} * {1} = {2}", num1, num2, product)

    End Sub

End Module

' Output (assuming 1234 and 5678 are entered as command-line arguments):
' Calling methods from MathLibrary.DLL:
' 1234 + 5678 = 6912
' 1234 * 5678 = 7006652        

// 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 arguments):
    Calling methods from MathLibrary.DLL:
    1234 + 5678 = 6912
    1234 * 5678 = 7006652        
*/

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

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

MultiplyClass.Multiply(num1, num2)
MultiplyClass.Multiply(num1, num2);

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

UtilityMethods.MultiplyClass.Multiply(num1, num2)
UtilityMethods.MultiplyClass.Multiply(num1, num2);

실행

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

TestCode 1234 5678

코드 컴파일

MathLibrary.DLL 파일을 빌드하려면 다음 명령줄을 사용하여 Add 및 Mult 파일을 컴파일합니다.

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

/target:library 컴파일러 옵션을 사용하면 컴파일러에서 EXE 파일 대신 DLL 파일을 출력합니다. /out 컴파일러 옵션을 사용하여 DLL 파일 이름을 지정합니다. 이 옵션 다음에 원하는 파일 이름을 입력합니다. 이 옵션을 사용하여 파일 이름을 지정하지 않으면 컴파일러에서 첫째 파일(Add.cs)을 DLL 이름으로 사용합니다.

TestCode.exe 실행 파일을 빌드하려면 다음 명령줄을 사용합니다.

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

/out 컴파일러 옵션은 EXE 파일을 출력하도록 컴파일러에 지시하고 출력 파일 이름(TestCode.exe)을 지정합니다. 이 컴파일러 옵션은 선택 사항입니다. /reference 컴파일러 옵션에서는 프로그램에서 사용하는 하나 이상의 DLL 파일을 지정합니다. 자세한 내용은 C#의 경우 /reference를 참조하고, Visual Basic의 경우 /reference(Visual Basic)를 참조하십시오.

명령줄에서 빌드하는 방법에 대한 자세한 내용은 csc.exe를 사용한 명령줄 빌드명령줄에서 빌드(Visual Basic)를 참조하십시오.

참고 항목

작업

방법: DLL 기준 주소 지정

개념

C# 프로그래밍 가이드

어셈블리와 전역 어셈블리 캐시(C# 및 Visual Basic)

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

DLL 프로젝트 디버깅

기타 리소스

Visual Basic 프로그래밍 가이드