DLL 파일이란?
DLL은 "Dynamic Link Library" 의 준말로 "동적 링크 라이브러리"
해당 파일을 이해하기 위해서는 "라이브러리 (Library)" 개념 먼저 이해하고,
정적 라이브러리 (Static Link Library) 방식과 비교해보면 좋다.
라이브러리(Library) 란?
Code에서는 반복되는 기능들이 많다. 그런 기능들을 매번 다시 작성할 수 없기에,
그러한 Logic을 따로 모아둔 파일이라고 볼 수 있다.
즉, 표준화된 함수 및 데이터 타입을 만들어서 모아 놓은 것.
라이브러리 파일을 include 해주면 그 안에 함수들을 자유롭게 사용할 수 있다.
→ 작업 속도와 Code 신뢰성을 확보할 수 있다.
이러한 라이브러리를 크게 "정적 라이브러리(.lib)" 와 "동적 라이브러리 (.dll)"로 구분할 수 있다.
(어떤 시점에 Main 프로그램에 연결(Link) 되는가에 따라 구분된다고 볼 수 있다.)
정적 라이브러리 (.lib, Static Link Library)
Compile 시점에 링커에 의해 Main 소스와 결합된다
컴파일할 때, 해당 파일 내의 함수들이 복사되는 것이다.
정적 라이브러리를 이용하는 경우에는 만들어진 실행파일만 전달하면 되기에
배포작업이 쉽지만, 실행파일 크기는 라이브러리에 따라 커질 수 있다.
동적 라이브러리 (.dll, Dynamic Link Library)
dll은 컴파일 시점에 Main 코드와 결합되지 않는다.
프로그램을 실행하면 dll 파일을 필요할 때 호출한다.
그렇기에 실행파일과 dll 파일은 독립적으로 존재한다고 볼 수 있다.
실행파일 크기를 줄일 수 있다. (메모리 절약)
하지만 DLL 파일 위치에 유의하며 배포해야 한다.
dll 파일을 활용하는 이유?
특정 프로그램이 모듈별 실행되는 경우라면 DLL 처리하면 좋다.
[상황]
- "A" 프로그램이 특정 DLL 파일 "B"가 필요하다.
- "B" 파일은 핵심 Logic으로 전체 프로그램 성능을 좌우한다.
- "A" 실행 프로그램은 변경점이 없으며, "B" 파일의 알고리즘에 따라 제품별 성능차이가 있다.
[활용]
→ 실행파일 "A"와 DLL 파일 "B"가 분리되어 있기에 디버깅이 용이하다.
→ 정적 라이브러리 파일이 아니기에 "A"는 컴파일할 필요가 없다.
→ DLL 파일만 변경해서 배포 및 성능 테스트를 할 수 있다.
→ 기존 DLL 파일 "B"에 새로운 DLL 파일 "C"를 만들어서 성능을 높일 수 있다.
→ 여러 언로 버전으로 구성된 아키텍처에서 활용할 수 있다.
DLL 파일 유의사항
- 파일 존재 여부와 위치 유의
- DLL 파일은 여러 언어와 버전으로 만들어질 수 있지만
실행파일과 DLL파일간 호환성 유의
- DLL간 종속성을 유의해야 합니다.
ex) 첫번째 DLL 변경으로 인해 두번째 DLL 파일에도 영향을 미칠 수 있다.
'설치 및 환경 설정' 카테고리의 다른 글
[VS] Visual Studio 최신 버전으로 컴파일 옵션 지정 (0) | 2021.06.13 |
---|---|
컴퓨터 예약 종료 기능 아이콘 만들기 (0) | 2021.06.12 |
windows 이모티콘 단축키 및 활용 (0) | 2021.06.05 |
[Windows] shutdown 명령어를 통한 컴퓨터 종료 예약 (0) | 2021.05.31 |
[VS] Visual Studio에서 input.txt로 입력받도록 설정하기 (0) | 2021.05.23 |
댓글