정적 라이브러리(Static Link Library)
- 필요한 함수를 프로그램 코드에 붙여 컴파일 시 프로그램 자체에서 참조 (Compile-Time)
- lib 파일은 하나의 거대한 파일이 생성
- 재사용성이 떨어짐
- 어플리케이션 업데이트 시 새로운 버전으로 작성
- 다른 어플리케이션에 사용 불가
- 하지만 버전 관리에 용이
- 프로그램 실행 중 내장된 함수를 사용하면서 빠른 처리 시간
- 한 번 컴파일 시 프로그램 .exe파일만 있으면 .lib없이 실행 가능(하나의 파일만 있으면 됨)
동적 라이브러리(Dynamic Link Library)
- 프로그램 실행 시 필요할 때만 DLL 파일에서 함수를 참조 (Run-Time)
- 여러 개의 작은 사이즈의 파일을 생성
- 어플리케이션을 업데이트 하더라도 DLL 기능에 변화가 없으면 재사용 가능
- DLL 함수 업그레이드 시 해당 DLL만 수정 배포
- 다른 어플리케이션에도 사용될 수 있음
- 하지만 동시에 버전 이슈가 발생하기 쉬움
- 프로그램 로딩 시 DLL을 모두 로드하지 않기 때문에 프로그램 로딩하는 시간이 단축
- 프로그램 실행 중 함수 호출에는 시간 소요
- 컴파일 시에는 dll이 필요 없으나, .exe 파일 구동 시에는 dll 필요
- dll 컴파일 시 lib도 같이 생성됨(dll 참조용)
출처