정적 라이브러리란?
연관성이 있는 함수가 담긴 오브젝트 파일들을 묶어서 배포할 수 있게 해주는 라이브러리
정적 라이브러리 빌드하는 방법
- 소스가 있는 디렉터리로 이동
- cl add.c 라고 적으면 링크까지 하라는 의미이므로 에러가 발생
- cl add.c /c를 적으면 컴파일만 하라는 의미이므로 에러 발생x
- 그러면 add.obj 파일이 만들어지는데 이런 함수 파일들을 여러 개 있는 경우
- lib add.obj xxx.obj yyy.obj /out:출력파일이름.lib를 입력한다.
- 그러면 정적 라이브러리 파일 .lib 파일이 만들어진다.
통합개발환경(VS)에서 빌드하는 방법
- 처음 프로젝트를 만들 때 정적 라이브러리라는 프로젝트를 선택해야 한다.
- 처음에 설정하지 않았더라도 프로젝트 메뉴 -> 속성 ->일반 -> 구성 형식 -> 정적 라이브러리 로 변경 가능하다.
정적 라이브러리 사용하기
- 반드시 헤더 파일과 라이브러리 파일이 소스 파일과 같이 있어야 함.
- 사용하는 방법은 만드는 것과 같이 2가지가 있다.
개발자 명령 프롬프트에서 빌드하는 법
- 소스가 있는 디렉터리로 이동한다.
- 어떤 함수를 호출하려면 헤더를 포함해야 한다.
- 헤더만 있어도 컴파일은 되니 cl main.c /c로 컴파일을 한다.
- link main.obj customSquare.lib 로 결합한다.
- 더 편한 방법은 cl main.c customSquare.lib 을 입력하면 한번에 결합 가능 하다.
- 그보다 더 편한 방법은 소스 코드에 아래 코드를 추가하고 빌드한다.
- #pragma comment(lib, "square.lib");
- 아니면 프로젝트 -> 속성 메뉴에서 링크 -> 입력 -> 추가 종속성에 이미 알려줄 수도 있다.
#include <stdio.h>
#include <windows.h>
#include "square.h"
#pragma comment(lib, "customSquare.lib");
int main()
{
int n = square(3);
printf("result : %d\n", n);
}
주의사항
- 개발자 명령 프롬프트에서 만든 lib파일은 개발자 명령 프롬프트에서 빌드해야 사용할 수 있다.
- => VS에서 만든 lib 파일은 개발자 명령 프롬프트 빌드과정에 사용할 수 없다. (이유는 이후 강의에서 후술)
- 반대로 VS에서는 개발자 명령 프롬프트에서 만든 lib 파일을 사용할 수 있으나 경고가 뜬다.
'운영체제 > [ecourse] Windows Programming' 카테고리의 다른 글
3-3. 가상 주소 공간과 DLL (0) | 2022.09.12 |
---|---|
3-2 Dynamic Library (0) | 2022.09.11 |
2-3. 라이브러리 개념 (0) | 2022.09.07 |
2-2. 실행 파일 포맷 (0) | 2022.09.07 |
2-1. 윈도우 핸들과 API (0) | 2022.09.06 |
댓글