자습서: 정적 라이브러리 만들기 및 사용

이 단계별 연습에서는 C++ 앱에 사용할 수 있도록 정적 라이브러리(.lib 파일)를 만드는 방법을 보여 줍니다. 정적 라이브러리를 사용하면 코드를 매우 편리하게 다시 사용할 수 있습니다. 기능이 필요한 모든 앱에서 동일한 루틴을 다시 구현하는 대신 정적 라이브러리에 한 번 작성한 다음 앱에서 참조합니다. 정적 라이브러리에서 연결된 코드는 앱의 일부가 됩니다. 코드를 사용하기 위해 다른 파일을 설치할 필요가 없습니다.

이 안내서에서는 다음 작업을 다룹니다.

필수 조건

C++ 언어의 기본적인 사항을 알고 있어야 합니다.

정적 라이브러리 프로젝트 만들기

프로젝트를 만드는 방법에 대한 지침은 Visual Studio 버전에 따라 다릅니다. 기본 설정된 버전의 Visual Studio에 대한 설명서를 보려면 버전 선택기 컨트롤을 사용하세요. 이 페이지의 목차 맨 위에 있습니다.

Visual Studio 정적 라이브러리 프로젝트를 만들려면 다음을 수행합니다.

  1. 메뉴 모음에서 파일>새로 만들기>프로젝트를 선택하여 새 프로젝트 만들기 대화 상자를 엽니다.

  2. 대화 상자 맨 위에서 언어C++로 설정하고 플랫폼Windows로 설정하고 프로젝트 형식라이브러리로 설정합니다.

  3. 필터링된 프로젝트 형식 목록에서 Windows 데스크톱 마법사를 선택한 다음, 다음을 선택합니다.

  4. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 MathLibrary를 입력하여 프로젝트의 이름을 지정합니다. 솔루션 이름 상자에 StaticMath를 입력합니다. 만들기 단추를 선택하여 Windows 데스크톱 프로젝트 대화 상자를 엽니다.

  5. Windows 데스크톱 프로젝트 대화 상자의 애플리케이션 종류에서 정적 라이브러리(.lib)를 선택합니다.

  6. 추가 옵션에서 미리 컴파일된 헤더 확인란이 선택되어 있으면 선택을 취소합니다. 빈 프로젝트를 선택합니다.

  7. 확인을 선택하여 프로젝트를 만듭니다.

Visual Studio 2017에서 정적 라이브러리 프로젝트를 만들려면 다음을 수행합니다.

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

  2. 새 프로젝트 대화 상자에서 설치된>Visual C++>을 선택합니다. 가운데 창에서 Windows 데스크톱 마법사를 선택합니다.

  3. 이름 상자에 프로젝트의 이름(예: MathLibrary)을 지정합니다. 솔루션 이름 상자에 StaticMath와 같은 솔루션의 이름을 지정합니다. 확인을 선택합니다.

  4. Windows 데스크톱 프로젝트 대화 상자의 애플리케이션 종류에서 정적 라이브러리(.lib)를 선택합니다.

  5. 추가 옵션에서 미리 컴파일된 헤더 확인란이 선택되어 있으면 선택을 취소합니다. 빈 프로젝트를 선택합니다.

  6. 확인을 선택하여 프로젝트를 만듭니다.

Visual Studio 2015에서 정적 라이브러리 프로젝트를 만들려면 다음을 수행합니다.

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

  2. 새 Project 대화 상자에서 설치된>템플릿>Visual C++>Win32를 선택합니다. 가운데 창에서 Win32 콘솔 애플리케이션을 선택합니다.

  3. 이름 상자에 프로젝트의 이름(예: MathLibrary)을 지정합니다. 솔루션 이름 상자에 StaticMath와 같은 솔루션의 이름을 지정합니다. 확인을 선택합니다.

  4. Win32 애플리케이션 마법사에서 다음을 선택합니다.

  5. 애플리케이션 설정 페이지의 애플리케이션 종류 아래에서 정적 라이브러리를 선택합니다. 추가 옵션에서 미리 컴파일된 헤더 확인란의 선택을 취소합니다. 마침을 선택하여 프로젝트를 만듭니다.

정적 라이브러리에 클래스 추가

정적 라이브러리에 클래스를 추가하려면 다음을 수행합니다.

  1. 새 클래스에 대한 헤더 파일을 만듭니다. 솔루션 탐색기MathLibrary를 마우스 오른쪽 단추로 클릭하여 프로젝트의 상황에 맞는 메뉴를 엽니다. 추가>새 항목을 선택합니다.

  2. 새 항목 추가 대화 상자에서 Visual C++>Code를 선택합니다. 가운데 창에서 헤더 파일 (.h)을 선택합니다. 헤더 파일의 이름(예: MathLibrary.h)을 지정하고 추가를 선택합니다. 거의 빈 헤더 파일이 표시됩니다.

  3. 덧셈, 뺄셈, 곱셈, 나눗셈 같은 일반적인 산술 연산을 수행하는 Arithmetic라는 클래스에 대한 선언을 추가합니다. 코드는 다음과 비슷합니다.

    // MathLibrary.h
    #pragma once
    
    namespace MathLibrary
    {
        class Arithmetic
        {
        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
            static double Divide(double a, double b);
        };
    }
    
  4. 새 클래스에 대한 소스 파일을 만들려면 솔루션 탐색기MathLibrary 프로젝트의 상황에 맞는 메뉴를 연 다음새 항목추가>를 선택합니다.

  5. 새 항목 추가 대화 상자의 가운데 창에서 C++ 파일(.cpp)을 선택합니다. 원본 파일의 이름(예: MathLibrary.cpp)을 지정합니다. 그런 다음 추가를 선택합니다. 빈 소스 파일이 표시됩니다.

  6. 이 소스 파일을 사용하여 클래스 Arithmetic의 기능을 구현합니다. 코드는 다음과 비슷합니다.

    // MathLibrary.cpp
    // compile with: cl /c /EHsc MathLibrary.cpp
    // post-build command: lib MathLibrary.obj
    
    #include "MathLibrary.h"
    
    namespace MathLibrary
    {
        double Arithmetic::Add(double a, double b)
        {
            return a + b;
        }
    
        double Arithmetic::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double Arithmetic::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double Arithmetic::Divide(double a, double b)
        {
            return a / b;
        }
    }
    
  7. 정적 라이브러리를 빌드하려면 메뉴 모음에서 빌드>솔루션 빌드를 선택합니다. 빌드는 다른 프로그램에서 사용할 수 있는 정적 라이브러리 MathLibrary.lib를 만듭니다.

    참고

    Visual Studio 명령줄에서 빌드하는 경우 프로그램을 빌드하는 데 두 단계를 거쳐야 합니다.

    1. 코드를 컴파일하고 MathLibrary.obj 개체 파일을 만들려면 실행 cl /c /EHsc MathLibrary.cpp 합니다. 이 cl 명령은 컴파일러, Cl.exe호출하고 /c 옵션은 연결하지 않고 컴파일을 지정합니다. 자세한 내용은 /c(연결하지 않고 컴파일)를 참조하세요.
    2. 코드를 연결하고 정적 라이브러리 MathLibrary.lib를 만들려면 실행 lib MathLibrary.obj 합니다. lib 명령은 라이브러리 관리자인 Lib.exe를 호출합니다. 자세한 내용은 LIB 참조를 참조하세요.

정적 라이브러리를 참조하는 C++ 콘솔 앱 만들기

Visual Studio 정적 라이브러리를 참조하는 C++ 콘솔 앱을 만들려면 다음을 수행합니다.

  1. 솔루션 탐색기 맨 위 노드인 솔루션 'StaticMath'를 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 엽니다. 추가>새 프로젝트를 선택하여 새 프로젝트 추가 대화 상자를 엽니다.

  2. 대화 상자 맨 위에서 프로젝트 형식 필터를 콘솔로 설정합니다.

  3. 필터링된 프로젝트 형식 목록에서 콘솔 앱을 선택한 후 다음을 선택합니다. 다음 페이지에서 프로젝트의 이름으로 MathClient 를 입력합니다.

  4. 만들기를 선택하여 클라이언트 프로젝트를 만듭니다.

    콘솔 응용 프로그램을 만들면 빈 프로그램이 만들어집니다. 소스 파일의 이름은 앞에서 선택한 이름과 동일하게 설정됩니다. 이 예제에서는 이름이 MathClient.cpp입니다.

Visual Studio 2017에서 정적 라이브러리를 참조하는 C++ 콘솔 앱을 만들려면 다음을 수행합니다.

  1. 솔루션 탐색기 맨 위 노드인 솔루션 'StaticMath'를 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 엽니다. 추가>새 프로젝트를 선택하여 새 프로젝트 추가 대화 상자를 엽니다.

  2. 새 Project 추가 대화 상자에서 설치된Visual C++>Windows Desktop> 선택합니다. 가운데 창에서 Windows 데스크톱 마법사를 선택합니다.

  3. 이름 상자에서 프로젝트의 이름(예: MathClient)을 지정합니다. 확인 단추를 선택합니다.

  4. Windows 데스크톱 프로젝트 대화 상자의 애플리케이션 종류에서 콘솔 애플리케이션(.exe)을 선택합니다.

  5. 추가 옵션에서 미리 컴파일된 헤더 확인란이 선택되어 있으면 선택을 취소합니다.

  6. 확인을 선택하여 프로젝트를 만듭니다.

  7. 콘솔 응용 프로그램을 만들면 빈 프로그램이 만들어집니다. 소스 파일의 이름은 앞에서 선택한 이름과 동일하게 설정됩니다. 이 예제에서는 이름이 MathClient.cpp입니다.

Visual Studio 2015에서 정적 라이브러리를 참조하는 C++ 콘솔 앱을 만들려면 다음을 수행합니다.

  1. 솔루션 탐색기 맨 위 노드인 솔루션 'StaticMath'를 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 엽니다. 추가>새 프로젝트를 선택하여 새 프로젝트 추가 대화 상자를 엽니다.

  2. 새 Project 추가 대화 상자에서 설치된>Visual C++>Win32를 선택합니다. 가운데 창에서 Win32 콘솔 애플리케이션을 선택합니다.

  3. 이름 상자에서 프로젝트의 이름(예: MathClient)을 지정합니다. 확인 단추를 선택합니다.

  4. Win32 애플리케이션 마법사 대화 상자에서 다음을 선택합니다.

  5. 애플리케이션 설정 페이지의 애플리케이션 종류 아래에서 콘솔 애플리케이션이 선택되어 있는지 확인합니다. 추가 옵션에서 미리 컴파일된 헤더를 지우고 빈 Project 선택합니다. 마침을 선택하여 프로젝트를 만듭니다.

  6. 빈 프로젝트에 원본 파일을 추가하려면 마우스 오른쪽 단추를 클릭하여 솔루션 탐색기MathClient 프로젝트의 상황에 맞는 메뉴를 연 다음새 항목추가>를 선택합니다.

  7. 새 항목 추가 대화 상자에서 Visual C++>Code를 선택합니다. 가운데 창에서 C++ 파일 (.cpp)을 선택합니다. 소스 파일의 이름(예: MathClient.cpp)을 지정하고 추가 단추를 선택합니다. 빈 소스 파일이 표시됩니다.

앱에서 정적 라이브러리의 기능 사용

앱의 정적 라이브러리에서 기능을 사용하려면 다음을 수행합니다.

  1. 수학 루틴을 사용하기 전에 정적 라이브러리를 참조합니다. 솔루션 탐색기MathClient 프로젝트의 상황에 맞는 메뉴를 열고참조추가>를 선택합니다.

  2. 참조 추가 대화 상자에는 참조할 수 있는 라이브러리가 나열됩니다. 프로젝트 탭에는 현재 솔루션의 모든 프로젝트와 이들 프로젝트가 참조하는 라이브러리가 나열됩니다. 프로젝트 탭을 열고 MathLibrary를 선택한 다음 확인을 선택합니다.

  3. MathLibrary.h 헤더 파일을 참조하도록 포함 디렉터리 경로를 수정합니다. 솔루션 탐색기MathClient를 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 엽니다. 속성을 선택하여 MathClient 속성 페이지 대화 상자를 엽니다.

  4. MathClient 속성 페이지 대화 상자에서 구성 값을 모든 구성으로 설정합니다. 플랫폼을모든 플랫폼으로 설정합니다.

  5. 구성 속성>C/C++>일반 속성 페이지를 선택합니다. 추가 포함 디렉터리 속성에서 MathLibrary 디렉터리의 경로를 지정하거나 해당 경로를 찾습니다.

    디렉터리 경로를 찾으려면

    1. 추가 포함 디렉터리 속성 값 드롭다운 목록을 열고 편집을 선택합니다.

    2. 추가 포함 디렉터리 대화 상자에서 텍스트 상자의 위쪽을 두 번 클릭합니다. 그런 다음 줄의 끝에 있는 줄임표 단추(...)를 선택합니다.

    3. 디렉터리 선택 대화 상자에서 수준을 탐색한 다음 MathLibrary 디렉터리를 선택합니다. 그런 다음 폴더 선택 단추를 선택하여 선택 내용을 저장합니다.

    4. 추가 포함 디렉터리 대화 상자에서 확인 단추를 선택합니다.

    5. [속성 페이지] 대화 상자에서 [확인] 단추를 선택하여 변경 내용을 프로젝트에 저장합니다.

  6. 이제 코드에 Arithmetic 헤더를 포함하여 이 앱에서 #include "MathLibrary.h" 클래스를 사용할 수 있습니다. MathClient.cpp의 내용을 다음 코드로 바꿉니다.

    // MathClient.cpp
    // compile with: cl /EHsc MathClient.cpp /link MathLibrary.lib
    
    #include <iostream>
    #include "MathLibrary.h"
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        std::cout << "a + b = " <<
            MathLibrary::Arithmetic::Add(a, b) << std::endl;
        std::cout << "a - b = " <<
            MathLibrary::Arithmetic::Subtract(a, b) << std::endl;
        std::cout << "a * b = " <<
            MathLibrary::Arithmetic::Multiply(a, b) << std::endl;
        std::cout << "a / b = " <<
            MathLibrary::Arithmetic::Divide(a, b) << std::endl;
    
        return 0;
    }
    
  7. 실행 파일을 빌드하려면 메뉴 모음에서 빌드>솔루션 빌드를 선택합니다.

앱 실행

앱을 실행하려면 다음을 수행합니다.

  1. MathClient가 기본 프로젝트로 선택되어 있는지 확인합니다. 선택하려면 솔루션 탐색기 MathClient를 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 연 다음 시작 Project 설정을 선택합니다.

  2. 메뉴 모음에서 디버그>을 선택해 프로젝트를 실행합니다. 출력은 다음과 비슷합니다.

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

참고 항목

연습: 동적 연결 라이브러리 만들기 및 사용(C++)