C++ 외부 라이브러리 사용하기

Brie·2023년 11월 6일
0

개발환경 세팅

목록 보기
2/3

dll, lib

dll은 동적 라이브러리이고, lib은 정적 라이브러리이다.
둘 다 외부의 코드를 사용하기 위한 Library이며 dll은 Runtime 중에, lib은 Compile 할 때 사용된다.

lib

일반적으로 실행 파일을 만들 때는 소스 코드를 컴파일하고 만들어진 obj 파일을 링커가 하나로 묶어 exe 파일을 만든다. 여기서 lib을 사용하면 링크 단계에서 링커가 이 lib파일도 같이 묶어서 하나의 exe 파일을 만들게 된다.

즉 빌드된 exe 파일은 컴파일된 소스코드와 lib 파일이 들어가게 된다. 그렇기 때문에 많이 쓰이면 쓰일수록 파일이 무거워지게 되며, RAM에 메모리가 많이 올라가게 된다.

dll

dll은 lib과 달리 파일을 실행할 때 해당 링커가 dll의 위치를 알고 있다면 exe 파일에 내용이 포함되어 있지 않아도 프로세스의 주소 공간에 로드하여 실행이 가능하다.

쉽게 설명하자면 빌드 후 런타임 상태에서 외부의 dll 파일을 가져다 사용하는 방식이다.

라이브러리 사용하기

lib

정적 라이브러리를 사용하는 과정은 다음과 같다.

  1. 링커에게 해당 lib의 경로를 알려준다.
  2. 해당 include(header)의 경로를 알려준다.

라이브러리 디렉터리 설정

먼저 라이브러리를 사용하기 위해서는 .lib 파일이 위치하는 디렉터리의 경로를 설정해주어야 한다.

프로젝트의 속성 페이지를 열고 다음 메뉴로 이동한다.

  • 링커 → 일반

해당 페이지에서 ‘추가 라이브러리 디렉터리’ 항목을 선택해 lib 파일의 경로를 입력한다.

추가 종속성 설정

‘추가 종속성(Additional Dependencies)’ 설정은 프로젝트에서 해당 라이브러리를 사용하기 위해 필요한 라이브러리 파일을 지정하는 데 사용된다.

이 설정은 프로젝트의 빌드 프로세스 중에 필요한 라이브러리를 컴파일러에게 알려주고, 이러한 라이브러리를 링크하여 실행 파일을 생성할 때 사용된다.

추가 종속성을 설정하는 방법에는 두 가지 방법이 있다.

  • 프로젝트 속성을 이용한 설정 프로젝트의 속성 페이지를 열고 다음 메뉴로 이동한다.
    • 링커 → 입력 → 추가 종속성

      해당 페이지에서 ‘추가 종속성’ 항목을 선택해 lib 파일의 파일명을 입력한다.

  • #pragma comment를 이용한 설정 #pragma comment(lib, "libraryname.lib") 와 같은 지시문을 소스 코드 내에서 사용하여 라이브러리를 링크한다.

두 방식의 주요 차이점은 다음과 같다.

  • #pragma comment를 사용한 라이브러리 링크는 소스 파일마다 개별적으로 설정해야 하므로 중복 작업이 발생할 수 있고 유지 보수가 어려울 수 있다.
  • 프로젝트 속성을 사용한 라이브러리 링크는 한 번 설정하면 전체 프로젝트에서 일관되게 적용되며, 라이브러리 종속성 관리가 더 간편하다.

dll

(작성예정)

0개의 댓글