Share via


관리되는 어셈블리 만들기 및 사용(C++)

업데이트: 2007년 11월

다음에 만들 라이브러리 유형은 관리되는 어셈블리입니다. 관리되는 어셈블리를 사용하면 코드를 매우 편리하게 다시 사용할 수 있습니다. 프로그램을 만들 때마다 동일한 루틴을 다시 구현하는 대신 해당 루틴을 한 번만 작성한 다음 이 기능이 필요한 응용 프로그램에서 루틴을 참조하도록 합니다.

이 연습에서는 다음과 같은 내용을 다룹니다.

  • 새 클래스 라이브러리 프로젝트 만들기

  • 클래스 라이브러리에 클래스 추가

  • 클래스 라이브러리를 참조하는 응용 프로그램 만들기

  • 콘솔 응용 프로그램에서 클래스 라이브러리의 기능 사용

  • 응용 프로그램 실행

사전 요구 사항

이 항목에서는 사용자가 C++ 언어의 기본적인 사항을 알고 있는 것으로 가정합니다. 이제 C++를 배우기 시작하는 초보자는 Herb Schildt가 쓴 "C++ Beginner's Guide"(https://go.microsoft.com/fwlink/?LinkId=115303)를 참조하는 것이 좋습니다.

새 클래스 라이브러리 프로젝트를 만들려면

  1. 파일 메뉴에서 새로 만들기를 선택한 다음 프로젝트...를 선택합니다.

  2. 프로젝트 형식 창의 Visual C++에서 CLR을 선택합니다. 이렇게 하면 공용 언어 런타임을 대상으로 하는 프로젝트가 만들어집니다.

  3. 템플릿 창에서 클래스 라이브러리를 선택합니다.

  4. 프로젝트의 이름(예: MathFuncsAssembly)을 선택하고 이름 필드에 입력합니다. 솔루션의 이름(예: ManagedAssemblies)을 선택하고 솔루션 이름 필드에 입력합니다.

  5. 확인을 눌러 프로젝트를 만듭니다.

  6. 새로 만든 프로젝트는 미리 컴파일된 헤더를 사용하도록 기본 설정됩니다. 미리 컴파일된 헤더를 사용하지 않으려면 프로젝트 메뉴에서 속성을 선택하고 구성 속성 노드를 확장하고 C/C++ 노드를 확장한 다음 미리 컴파일된 헤더를 선택합니다. 미리 컴파일된 헤더 만들기/사용 옆에 있는 드롭다운 목록에서 미리 컴파일된 헤더 사용 안 함을 선택합니다. 확인을 눌러 변경 내용을 저장합니다. 미리 컴파일된 헤더에 대한 자세한 내용은 미리 컴파일된 헤더 파일 만들기를 참조하십시오.

클래스 라이브러리에 클래스를 추가하려면

  1. 새 CLR 클래스 라이브러리를 만들면 마법사가 간단한 클래스를 생성합니다. 헤더 파일 및 소스 파일의 이름은 앞에서 프로젝트에 대해 지정한 이름과 동일하게 설정됩니다. 이 예제에서 헤더 파일과 소스 파일의 이름은 각각 MathFuncsAssembly.h 및 MathFuncsAssembly.cpp입니다.

  2. MathFuncsAssembly.h에서 기존 코드를 덧셈, 뺄셈, 곱셈, 나눗셈 같은 일반적인 산술 연산을 수행하는 MyMathFuncsAssembly라는 간단한 클래스로 대체합니다. 코드는 다음과 같습니다.

    // MathFuncsAssembly.h
    
    using namespace System;
    
    namespace MathFuncs
    {
        public ref class MyMathFuncs
        {
        public:
            // Returns a + b
            static double Add(double a, double b);
    
            // Returns a - b
            static double Subtract(double a, double b);
    
            // Returns a * b
            static double Multiply(double a, double b);
    
            // Returns a / b
            // Throws DivideByZeroException if b is 0
            static double Divide(double a, double b);
        };
    }
    
  3. 소스 파일에서 MyMathFuncs의 기능을 구현합니다. 코드는 다음과 같습니다.

    // MathFuncsAssembly.cpp
    // compile with: /clr /LD
    
    #include "MathFuncsAssembly.h"
    
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {
            return a + b;
        }
    
        double MyMathFuncs::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double MyMathFuncs::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double MyMathFuncs::Divide(double a, double b)
        {
            if (b == 0)
            {
                throw gcnew DivideByZeroException("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  4. 빌드 메뉴에서 솔루션 빌드를 선택하여 클래스 라이브러리를 컴파일합니다. 이렇게 하면 다른 프로그램에서 사용할 수 있는 DLL(동적 연결 라이브러리)이 작성됩니다. DLL에 대한 자세한 내용은 DLL을 참조하십시오.

클래스 라이브러리를 참조하는 응용 프로그램을 만들려면

  1. 방금 만든 클래스 라이브러리를 참조하고 사용하는 응용 프로그램을 만들려면 파일 메뉴에서 새로 만들기를 선택한 다음 프로젝트...를 선택합니다.

  2. 프로젝트 형식 창의 Visual C++에서 CLR을 선택합니다. 이렇게 하면 공용 언어 런타임을 대상으로 하는 프로젝트가 만들어집니다.

  3. 템플릿 창에서 CLR 콘솔 응용 프로그램을 선택합니다.

  4. 프로젝트의 이름(예: MyExecRefsAssembly)을 선택하고 이름 필드에 입력합니다. 솔루션 옆에 있는 드롭다운 목록에서 솔루션에 추가를 선택합니다. 이렇게 하면 새 프로젝트가 동일한 솔루션에 클래스 라이브러리로 추가됩니다.

  5. 확인을 눌러 프로젝트를 만듭니다.

  6. 새로 만든 프로젝트는 미리 컴파일된 헤더를 사용하도록 기본 설정됩니다. 미리 컴파일된 헤더를 사용하지 않으려면 프로젝트 메뉴에서 속성을 선택하고 구성 속성 노드를 확장하고 C/C++ 노드를 확장한 다음 미리 컴파일된 헤더를 선택합니다. 미리 컴파일된 헤더 만들기/사용 옆에 있는 드롭다운 목록에서 미리 컴파일된 헤더 사용 안 함을 선택합니다. 확인을 눌러 변경 내용을 저장합니다. 미리 컴파일된 헤더에 대한 자세한 내용은 미리 컴파일된 헤더 파일 만들기를 참조하십시오.

콘솔 응용 프로그램에서 클래스 라이브러리의 기능을 사용하려면

  1. 새 CLR 콘솔 응용 프로그램을 만들면 콘솔에 "Hello World"라는 간단한 메시지를 출력하는 프로그램이 자동으로 생성됩니다. 소스 파일의 이름은 위에서 프로젝트에 대해 지정한 이름과 동일하게 설정됩니다. 이 예제에서 소스 파일의 이름은 MyExecRefsAssembly.cpp입니다.

  2. 클래스 라이브러리에서 만든 수학 루틴을 사용하려면 이를 참조해야 합니다. 이렇게 하려면 프로젝트 메뉴에서 참조...를 선택합니다. 속성 페이지 대화 상자에서 공용 속성 노드를 확장하고 참조를 선택한 다음 새 참조 추가… 단추를 선택합니다. 참조... 대화 상자에 대한 자세한 내용은 <Projectname> 속성 페이지 대화 상자, 공용 속성, 프레임워크 및 참조를 참조하십시오.

  3. 참조 추가 대화 상자가 나타납니다. 이 대화 상자에는 참조할 수 있는 라이브러리의 전체 목록이 표시됩니다. .NET 탭에는 .NET Framework에 포함된 라이브러리가 나열됩니다. COM 탭에는 컴퓨터의 COM 구성 요소가 모두 나열됩니다. 프로젝트 탭에는 현재 솔루션의 모든 프로젝트와 이 프로젝트에 포함된 라이브러리가 모두 나열됩니다. 프로젝트 탭에서 MathFuncsAssembly를 선택한 다음 확인을 클릭합니다. 참조 추가 대화 상자에 대한 자세한 내용은 참조 추가 대화 상자를 참조하십시오.

    참고:

    #using <MathFuncsAssembly.dll>과 같이 #using 지시문을 포함하여 소스 파일에서 직접 어셈블리를 참조할 수 있습니다. 이 지시문에 대한 자세한 내용은 The #using Directive을 참조하십시오.

  4. 이제 이 응용 프로그램에서 MyMathFuncs 클래스를 사용할 수 있습니다. MyExecRefsAssembly.cpp에서 파일 함수의 내용을 다음 코드로 바꿉니다.

    // MyExecRefsAssembly.cpp
    // compile with: /clr /FUMathFuncsAssembly.dll
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
        double a = 7.4;
        int b = 99;
    
        Console::WriteLine("a + b = {0}",
            MathFuncs::MyMathFuncs::Add(a, b));
        Console::WriteLine("a - b = {0}",
            MathFuncs::MyMathFuncs::Subtract(a, b));
        Console::WriteLine("a * b = {0}",
            MathFuncs::MyMathFuncs::Multiply(a, b));
        Console::WriteLine("a / b = {0}",
            MathFuncs::MyMathFuncs::Divide(a, b));
    
        return 0;
    }
    
  5. 빌드 메뉴에서 솔루션 빌드를 선택하여 실행 파일을 빌드합니다.

응용 프로그램을 실행하려면

  1. MyExecRefsAssembly가 기본 프로젝트로 선택되어 있는지 확인합니다. 솔루션 탐색기에서 MyExecRefsAssembly를 선택한 다음 프로젝트 메뉴에서 시작 프로젝트로 설정을 선택합니다.

  2. 프로젝트를 실행하려면 디버그 메뉴에서 디버깅하지 않고 시작을 선택합니다. 다음과 같은 결과가 출력됩니다.

    a + b = 106.4
    a - b = -91.6
    a * b = 732.6
    a / b = 0.0747474747474748
    

다음 단계

이전:정적 라이브러리 만들기 및 사용(C++) | 다음:다음 학습 단계(C++)

참고 항목

작업

Visual C++ 둘러보기

기타 리소스

공용 언어 런타임의 어셈블리

응용 프로그램 도메인