2009년 11월 7일 토요일

동적 링크 라이브러리(Dynamic-link library - DLL)

동적 링크 라이브러리(Dynamic-link library - DLL)

 

마이크로소프트 윈도우즈의 가장 중요한 구조적 요소 중 하나.

 

라이브러리 기초

동적 링크 라이브러리(dynamic-link library)

- 일반적으로 직접 실행할 수 없다.

- 메시지를 받지 않는다.

- 별개의 파일이다.

- 프로그램이나 다른 DLL이 특정 작업을 수행하기 위해 호출할 수 있는 함수를 담고 있다.

- ex)  KERNEL32.DLL, USER32.DLL, GDI32.DLL, KEYBOARD.DRV, SYSTEM.DRV, MOUSE.DRV 등

- 일부 동적 링크 라이브러리는 '리소스 전용(resource-only)'이라 한다.

- 목적 : 많은 서로 다른 프로그램이 사용할 수 있도록 함수와 리소스를 제공하는 것!

- 어떤 확장자도 가질 수 있지만, 표준 확장자는 DLL 이다.

동적 링킹(dynamic linking)

윈도우즈가 어떤 모듈의 함수를 라이브러리 모듈의 실제 함수와 연결시키기 위한 과정을 뜻한다.

실행 시간에 발생한다.

정적 링킹(static linking)

프로그램 개발중에 발생하는 과정.

다양한 오브젝트(.OBJ) 모듈, 런타임 라이브러리(.LIB) 파일, 컴파일된 리소스(.RES) 파일을 정적 링크하여 윈도우즈 실행(.EXE)파일을 생성하게 된다.

 

라이브러리: 하나의 단어와 다양한 의미

오브젝트 라이브러리

- 확장자가 .LIB인 파일.

- 링커를 실행할 때 정적 링킹(static linking)이라는 과정을 통해 프로그램의 .EXE 파일에 추가되는 코드

- ex) LIBC.LIB

임포트 라이브러리

- 특별한 형태의 오브젝트 라이브러리 파일.

- 오브젝트 라이브러리와 마찬가지로 확장자가 .LIB인 파일

- 소스 코드에서 호출하는 함수를 링커가 해결할 때 사용.

  그러나 임포트 라이브러리에는 코드가 들어 있지 않다.

오브젝트 라이브러리와 임포트 라이브러리는 프로그램 개발중에(실행 파일을 생성할 때)만 사용된다.

반면에, 동적 링크 라이브러리는 실행 중에 사용된다.

 

댓글 없음:

댓글 쓰기