티스토리 뷰

라이브러리

라이브러리 : 여러 프로그램에서 자주 사용하는 함수와 데이터들을 실행이 가능한 바이너리 형태로 묶어놓은 파일

대표적인 런타임 라이브러리 : Libcmt.lib, Libcmtd.lib, Msvcrt.lib, Msvcrtd.lib

라이브러리 이름 중 ‘d’로 끝나는 경우 디버그 모드로 컴파일 할 때 사용되는 라이브러리

디폴트로 사용하도록 지정되어 있는 라이브러리 : 프로젝트 속성 > C/C++ > Code Generation > Runtime Library 에서 확인 가능

- 링커 : lib 파일들과 obj파일들을 하나로 묶어서 실행파일을 생성하는 과정을 주도


라이브러리 활용 방법

  1. 프로젝트 속성 > 링커 > input 탭에 라이브러리 추가해주기

  2. 속성창 이용하지 않고 코드에서 #pragma comment(lib, “라이브러리 이름“) 으로 지정 가능

- 라이브러리 경로 지정 : 프로젝트 속성 > C/C++ > 추가 디렉터리 에 라이브러리파일 위치 지정


라이브러리의 종류

1. Static Linking Library(정적라이브러리)

실행파일이 처음 만들어 질 때부터 아예 하나로 묶여버리는 라이브러리

라이브러리의 바이너리 코드를 완전히 포함하고 있다.

장점 : 실행의 독립성 >> 실행파일만 있으면 언제 어디에서건 실행 가능

단점 : 메모리 공간을 많이 차지


2. Dynamic Linking Library(DLL)

- 정적라이브러리와 달리 필요한 함수만 호출해서 사용한다.
- 장점 : 메모리 공간이 절약되고, 로딩속도가 빠르다.
함수를 고치기 위해 프로그램에 접근하는 것이 아니라 DLL만 고치면 되므로 수정에 있어 자유롭다.
- 단점 : 정적라이브러리보다 사용하는 것이 복잡하고 까다롭다.


정적라이브러리 / DLL

1. 정적 라이브러리

- 실행파일의 일부로 빌드하기 때문에 정적 라이브러리를 포함하여 가상 메모리 구성

- 메인 메모리에 올라가는 페이지는 BBB.exe의 페이지




2. DLL

- 실행파일의 일부로 포함되지 않으므로 프로세스는 자신의 가상메모리에 DLL을 매핑해야한다.

- 메인 메모리에 올라간 8,9는 BBB의 것이 아니라 별도의 파일로 존재하는 DLL을 공유하는 것이다.


댓글
댓글쓰기 폼