일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 다익스트라
- Dijkstra
- two pointer
- 그래프
- Brute Force
- SQL
- MYSQL
- binary search
- union find
- Hash
- Trie
- Two Points
- 이진탐색
- 스토어드 프로시저
- Stored Procedure
- String
- DP
- Today
- Total
codingfarm
정적 라이브러리 본문
ko.wikipedia.org/wiki/C%2B%2B_%ED%91%9C%EC%A4%80_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC
정의
- 소프트웨어 개발 시 사용되는 프로그램의 구성요소
- 공통으로 사용될 수 있는 특정한 기능(들)을 모듈화한 것
- 대상 환경(플랫폼)에서 바로 실행될 수 있는 형태로 제공됨
$\therefore$ 라이브러리는 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다.
정적라이브러리 만들기
docs.microsoft.com/ko-kr/cpp/build/walkthrough-creating-and-using-a-static-library-cpp?view=msvc-160
솔루션 탐색기에 파일들이 위와같이 표시되도록 설정해준다.
MathLibrary.h와 MathLibrary.cpp을 아래와 같이 작성한다.
// 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);
};
}
// 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;
}
}
|
cs |
그리고 해당 프로젝트를 빌드하면
....\StaticMath\Debug 경로에 MathLibrary.lib 가 빌드된것을 확인할 수 있습니다.
정적 라이브러리 사용
docs.microsoft.com/ko-kr/cpp/build/walkthrough-creating-and-using-a-static-library-cpp?view=msvc-160
정적라이브러리를 추가하기 위해선 라이브러리와 헤더를 등록해야한다.
1. 라이브러리 등록
라이브러리의 등록은 라이브러리의 경로등록과 링크할 라이브러리 등록 2가지 과정으로 나뉜다.
라이브러리 경로 등록
라이브러리경로는 크게 3가지 방법으로 추가할 수 있다.
- OS의 환경변수에 라이브러리의 경로 등록
- 프로젝트의 속성 페이지를 켜고 [구성속성 $\rightarrow$ 링커 $\rightarrow$ 일반] 의 추가 라이브러리 디렉토리 칸에 MathLibrary.lib의 경로를 지정
- 라이브러리 파일을 프로젝트의 경로에 직접 넣어준다. (이 예에선 ......\MathClient\MathClient에 MathLib.lib를 넣어주면 된다.)
링크할 라이브러리 등록
링크할 라이브러리를 등록하는 방법은 크게 2가지로 나뉜다.
- #pragma once(lib, "xxxx.lib") 를 입력
- 프로젝트의 속성 페이지를 키고 [링커 $\rightarrow$ 입력 $\rightarrow$ 추가 종속성] 에 추가하고자 하는 라이브러리를 등록
이 예에서는 MathLibrary.lib를 등록하면 된다.
2. 헤더파일 등록
헤더 파일의 등록 방법도 여러가지로 나뉜다.
- 환경변수에 헤더파일의 경로 추가
- 프로젝트의 속성페이지에서 [C/C++ $\rightarrow$ 추가 $\rightarrow$ 일반]의 추가포함 디렉토리에 헤더파일의 경로를 등록
- 헤더파일을 프로젝트의 경로에 직접 추가
라이브러리를 쓸 준비가 끝났다면 아래 코드를 작성하고 빌드후 실행한다.
// MathClient.cpp
#include<iostream>
#include "MathLibrary.h"
using namespace std;
int main(void) {
cout << "Add : " << MathLibrary::Arithmetic::Add(2.5, 2.0) << endl;
cout << "Sub : " << MathLibrary::Arithmetic::Subtract(2.5, 2.0) << endl;
cout << "Mul : " << MathLibrary::Arithmetic::Multiply(2.5, 2.0) << endl;
cout << "Div : " << MathLibrary::Arithmetic::Divide(2.5, 2.0) << endl;
return 0;
}
|
cs |
'Programming Language > C++' 카테고리의 다른 글
상속 접근 지정자 (0) | 2021.05.14 |
---|---|
출력 디렉토리 (0) | 2021.05.07 |
프로젝트 셋팅 - 미리 컴파일된 헤더(Precompiled Header) (0) | 2021.05.05 |
map 활용 (0) | 2021.04.22 |
vector 정렬하기 (0) | 2021.04.21 |