CS 전공지식/기타

DLL(Dynamic Link Library) 이란?

CodeHunst 2025. 6. 25. 16:04

우선 라이브러리가 무엇인지 알아보자.

라이브러리

공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임

특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들

 

예시

  • Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)
  • C++의 표준 템플릿 라이브러리 (STL)
  • Node.js에서 npm으로 설치한 모듈
  • HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
  • 웹에서 사용자 인터페이스 개발에 사용되는 React.js

 

 

이런 라이브러리는 언제 메인 프로그램에 연결하느냐에 따라서 Static Link와 Dynamic Link로 나뉘며, DLL은 이 중 후자를 뜻한다. 

 

정적 라이브러리 lib

- 프로그램 빌드 시 라이브러리가 컴파일의 링킹 단계에서 실행 파일에 결합된다.

- 따라서 독립적으로 라이브러리 함수들을 사용 가능.

동적 라이브러리 dll

- 컴파일 후 output file이 2개 생성된다. (*.lib 파일,  *.dll 파일)

- *.lib 파일은 링크 시 필요, *.dll 파일은 실행 시 필요

- DLL의 *lib 파일은 DLL이 제공하고자 하는 함수 정보를 가지는 정보 파일.

- 프로그램 실행시 dll 파일에서 함수를 참조

- 링크 단계에서 실행 바이너리의 *.obj 파일드로가 DLL 의 *.lib 파일을 함께 링크하여 이 정보를 토대로 runtime 에 DLL 함수 코드를 참조.

 

요약 : 컴파일 후 생성된 * lib 파일의 정보를 토대로 실행 시 *.dll 파일 함수를 참조한다.

 

DLL의 장점

- 실행파일의 사이즈가 작아진다.

- 재사용성이 증대된다.(한 코드를 여러 프로그램에서 사용 가능)

- DLL 업그레이드 시 해당 모듈만 교체하고 메인 프로그램은 컴파일하지 않아도 된다.

 

DLL 단점

- 상대적으로 속도가 느리다.

- 반드시 실행파일과 함께 배포되어야 한다.

 

 

 

 

 

[출처]

https://goddaehee.tistory.com/185 [갓대희의 작은공간:티스토리]

 

https://ence2.github.io/2020/11/%EC%A0%95%EC%A0%81-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AClib-vs-%EB%8F%99%EC%A0%81-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%ACdll/

 

정적 라이브러리(lib) vs 동적 라이브러리(dll)

라이브러리란 특정한 코드(함수 혹은 클래스)를 포함하고 있는 컴파일된 파일입니다. 라이브러리에도 그 쓰임새에 따라서 여러가지 종류가 있습니다.(크게 3가지) 가장 흔하게 쓰일수 있는 “정

ence2.github.io