- 동적 링크라고 하며 실행 파일에서 해당 라이브러리의 기능을 사용 시에만, 라이브러리 파일을 참조하여(혹은 다운로드받아) 기능을 호출한다.
- 정적 링크와는 다르게 컴파일 시점에 실행 파일에 함수를 복사하지 않고, 함수의 위치정보만 갖고 그 함수를 호출할 수 있게 한다.
1. DLL의 이점
1) 더 적은 리소스 사용
- 한 코드를 여러 프로그램이 동시에 사용하기 때문에 메모리가 절약된다.
- 사용되는 디스크 공간을 줄일 수 있다.
(정적링크를 사용하는 경우 실행 파일에 라이브러리의 함수가 모두 포함되어 실행파일이 커지지만 DLL을 사용하는 프로그램은 크기가 작다.)
- 운영 체제와 프로그램이 더 빠르게 로드 및 실행되며 컴퓨터에서 디스크 공간을 더 적게 차지한다.
2) 모듈식 아키텍처 활용
- DLL을 사용하면 모듈식 프로그램을 효율적으로 개발할 수 있다.
여러 언어 버전이 필요한 큰 프로그램이나 모듈식 아키텍처가 필요한 프로그램을 개발할 수 있다.
3) 손쉬운 배포와 설치
- DLL 내의 함수를 업데이트하거나 수정해야 하는 경우 DLL을 배포하고 설치할 때 프로그램을 DLL과 다시 연결하지 않아도 된다.
- 여러 프로그램이 같은 DLL을 사용하는 경우에는 모든 프로그램에 업데이트나 수정 내용이 적용된다.
4) 프로그래머들의 분담 작업이 용이하며 재사용성도 뛰어남.
또한 코드의 양이 적어지므로 디버깅도 용이해진다.
2. DLL 사용시 유의 점
- 프로그램이 DLL을 사용할 때는 종속성이라는 문제로 인해 프로그램이 실행되지 않을 수 있다.
(특히 system32 폴더 내의 DLL 파일은 조심 하자.)
- 가끔 어떤 프로그램 사용시 특정 DLL 파일을 어느 위치에 저장시키라고 하는 경우가 있는데 해당 프로그램을 신뢰할 수 있는지 확인해 보아야 한다.
해로운 DLL 파일일 수 있기 때문이다.
- DLL 파일을 함부로 이동시키면 프로그램이 정상적으로 작동하지 않을 수 있다.
※DLL 종속성 이란?
프로그램이나 DLL이 다른 DLL의 DLL 함수를 사용하는 경우 종속성이 작성된다.
이런 경우 해당 프로그램은 더 이상 자체 포함 프로그램이 아니며, 종속성이 손상되면 프로그램에 문제가 발생할 수 있다.
예를 들어 다음 작업 중 하나를 수행하면 프로그램이 실행되지 않을 수 있다.
1) 종속 DLL을 새 버전으로 업그레이드하는 경우
2) 종속 DLL을 수정하는 경우
3) 종속 DLL을 이전 버전으로 덮어쓰는 경우
4) 종속 DLL을 컴퓨터에서 제거하는 경우
이러한 작업을 대개 DLL 충돌이라고 하고, 이전 버전과의 호환성이 적용되지 않으면 프로그램이 정상적으로 실행되지 않을 수 있다.