VB :: Lecture & TIPs

[VB.NET] System.Reflection 을 이용한 동적 DLL 사용하기

VB.NET 에서는 매우 유용하게 동적 DLL을 사용할 수 있습니다.

동적 DLL 은 프로그램 실행 중에 로드되어 사용되며, 라이브러리의 업데이트나 유지 관리가 용이하므로 보다 효율적인 유지 보수 및 관리가 가능하도록 해 줍니다.

아래 예제를 통해 VB.NET에서 동적 DLL을 사용하는 방법을 자세히 살펴보겠습니다.

 

Imports System.Runtime.InteropServices

Module MainModule
    ' DLL 함수의 프로토타입을 정의합니다.
    <DllImport("example.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
    End Function

     Sub Main()
        ' DLL 함수를 호출합니다.
        Dim result As Integer = Add(7, 8)
        Console.WriteLine("결과: " & result)
    End Sub
End Module

 

“example.dll” 이라는 DLL 을 동적으로 호출하여 두 숫자를 더하는 코드는 VB.NET 에서 동적 DLL 사용의 기본적인 방법을 보여주는 간단한 예제입니다.

이를 실행 (Compile) 하거나 디버깅 (Debugging) 하면 DLL 의 함수를 성공적으로 호출하여 결과가 출력됨을 확인하실 수 있습니다.

동적 DLL 사용은 프로그램의 유연성을 향상시키고, 여러 라이브러리를 효율적으로 관리하는 데 도움이 됩니다. VB.NET 에서는 System.Reflection 네임스페이스를 활용하여 동적 DLL 을 사용하는 방법을 제공하며, 프로그램의 유연성과 효율성을 높이는 강력한 도구입니다. 이를 통해 프로그램이 실행되는 동안 DLL을 로드하고 해당 DLL 의 Method (메서드) 를 간편하게 호출할 수 있습니다.

다음 예제를 통해, System.Reflection 을 활용하여 동적 DLL 을 어떻게 사용하는지에 대해 보다 구체적인 방법을 살펴보도록 하겠습니다.

​위의 코드를 ExampleClass.vb 파일로 저장해주세요. 그 후에는 제시된 명령어를 사용하여 example.dll 을 생성하기 위해 컴파일을 진행하시면 됩니다. 이제 example.dll 은 VB.NET 코드 내에서 호출하고, 활용할 수 있습니다.

 

Imports System.Reflection

Module MainModule
    Sub Main()
        ' DLL 파일의 경로를 설정합니다.
        Dim dllPath As String = "C:\path\to\your\example.dll"

        ' DLL 파일을 불러옵니다.
        Dim assembly As Assembly = Assembly.LoadFrom(dllPath)

        ' DLL 내의 클래스 및 메서드 정보를 가져옵니다.
        Dim className As String = "ExampleNamespace.ExampleClass"
        Dim methodName As String = "Add"

        Dim type As Type = assembly.GetType(className)
        Dim methodInfo As MethodInfo = type.GetMethod(methodName)

        ' 메서드를 호출합니다.
        Dim instance As Object = Activator.CreateInstance(type)
        Dim result As Integer = CType(methodInfo.Invoke(instance, New Object() {5, 3}), Integer)

        ' 최종적으로 도출된 결과를 출력합니다.
        Console.WriteLine("결과: " & result)
    End Sub
End Module

 

위의 코드를 실행하면, example.dll 이 동적으로 호출되어 두 숫자의 합계를 출력하는 결과를 확인하실 수 있습니다. 이어서, 이와 관련된 추가 예제를 설명해드리도록 하겠습니다. 아래에 제시된 코드는 DLL을 생성하기 위한 예제 코드와, 생성된 DLL 을 VB.NET 에서 활용하는 예시를 보여주고 있습니다.

아래에는 ExampleClass 라는 클래스를 정의하고 있으며, 이 클래스 안에는 두 개의 정수를 입력받아 그 합을 계산하고 반환하는 Add() 메서드가 포함되어 있습니다. 이 코드를 컴파일하면 DLL 파일이 생성됩니다.

생성된 DLL 파일은 다른 프로젝트에서 동적으로 불러와 사용할 수 있으며, 궁극적으로 코드의 재사용성을 높여, 모듈화를 통한 보다 효율적인 코드 관리를 수행할 수 있습니다.

 

 Public Class ExampleClass
    Public Shared Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
        MsgBox(a.ToString() & " + " & b.ToString() & " = " & (a + b).ToString())
        Return a + b
    End Function
End Class

 

마지막으로 example.dll 이라는 DLL 파일을 동적으로 불러와서, 그 안에 정의된 ExampleClass 클래스의 Add() 메서드를 호출하여 두 숫자 (7 과 8) 를 더하는 결과를 Console (콘솔) 화면에 출력하는 역할을 하는 코드입니다.

 

Imports System.Reflection

Module MainModule
    Sub Main()
        ' DLL 파일의 경로를 설정합니다.
        Dim dllPath As String = "DLL의_경로\example.dll"

        ' DLL 파일을 불러옵니다.
        Dim assembly As Assembly = Assembly.LoadFile(dllPath)

        ' DLL 내의 클래스 및 메서드 정보를 가져옵니다.
        Dim className As String = "루트네임스페이스.ExampleClass"
        Dim methodName As String = "Add"

        Dim type As Type = assembly.GetType(className)
        Dim methodInfo As MethodInfo = type.GetMethod(methodName)

        ' 메서드를 호출합니다.
        Dim returnValue As Integer = DirectCast(methodInfo.Invoke(Nothing, New Object() {5, 3}), Integer)

        ' 최종적으로 도출된 결과를 출력합니다.
        Console.WriteLine("결과: " & returnValue.ToString())
    End Sub
End Module

 

최종적으로 위 코드를 실행하면, example.dll 을 동적으로 호출하여 두 숫자 (7 과 8) 를 합한 계산 결과가 출력됨을 확인하실 수 있습니다.

감사합니다.

Leave a Reply

Discover more from Dream big, Achieve more.

Subscribe now to keep reading and get access to the full archive.

Continue reading