1. DLL (Dynamic Linked Library)

  • 정의:
    DLL은 Dynamic Linked Library의 약자로, 동적 연결 라이브러리를 의미합니다.
    여러 프로그램에서 공통적으로 사용할 수 있는 함수와 클래스를 모아 놓은 파일입니다.
  • 특징:
    • 프로그램 크기 감소: 공통 코드를 DLL로 분리하여 프로그램 크기를 줄임.
    • 재사용 가능: 여러 프로그램이 동일 DLL을 호출하여 코드 재사용.
    • 시스템 기능 제공: C:\WINDOWS\system32 폴더에 포함된 다양한 시스템 DLL 파일은 윈도우 프로그램에 공통 기능 제공.

a. DLL의 예시

  • 메모장, 그림판 등에서 파일 열기 기능은 윈도우 시스템 DLL을 호출하여 구현됩니다.
  • 예: user32.dll, kernel32.dll 등.

b. DLL의 종류

  • MFC (Microsoft Foundation Classes) 기반 DLL:
    1. 정적으로 MFC에 링크하는 기본 DLL: MFC 라이브러리를 정적으로 링크.
    2. 동적으로 MFC에 링크하는 기본 DLL: 실행 시 MFC 라이브러리를 동적으로 로드.
    3. MFC 확장 DLL: 항상 동적으로 MFC에 링크하며, 다른 MFC 프로그램에서 확장 가능.

c. DLL 로드 방법

  • 동적 로드: LoadLibrary와 GetProcAddress를 사용.
  • 정적 로드: .lib 파일을 사용하여 컴파일 시 DLL을 포함.

d. DLL의 장점

  • 코드의 모듈화: 동일한 함수나 클래스를 여러 프로그램에서 사용할 수 있도록 분리.
  • 유지보수 용이성: DLL 파일만 업데이트하여 여러 프로그램의 기능을 변경.

2. COM (Component Object Model)

  • 정의:
    COM은 마이크로소프트가 개발한 컴포넌트 모델로, 재사용 가능한 소프트웨어 객체를 작성하고 사용하기 위한 기술.
  • 특징:
    • 윈도우 운영체제의 기본 모듈.
    • OLE, ActiveX와 같은 기술의 기반.
    • 언어 독립적: 여러 프로그래밍 언어에서 COM 객체를 호출 가능.

a. COM의 역할

  • OLE (Object Linking and Embedding):
    • COM을 기반으로 한 기술로, 문서 내에서 다른 유형의 데이터를 연결하거나 삽입할 수 있도록 지원.
    • 예: 워드 문서에 엑셀 시트를 삽입.
  • ActiveX:
    • 인터넷 환경에서 OLE와 COM 기술을 확장한 기술.
    • 웹 브라우저 내에서 동작하는 컨트롤과 플러그인.

b. COM의 장점

  • 플랫폼 통합: 다양한 애플리케이션이 동일한 인터페이스로 작업 가능.
  • UI 통합: 사용자가 쉽게 인터페이스와 상호작용 가능.

3. DLL과 COM의 관계

  • DLL은 COM의 그릇 역할:
    • COM 객체는 DLL에 포함되어 배포되는 경우가 많음.
    • 프로그램은 DLL을 통해 COM 객체에 접근 가능.

4. DLL 로드 방법

  • LoadLibrary와 GetProcAddress 사용:
    • 런타임에 DLL을 로드하고 특정 함수에 접근.
     
  • 정적 로드:
    • .lib 파일을 사용해 DLL을 정적으로 링크.
     

 


5. DLL과 COM의 활용 사례

  1. 공통 기능 제공:
    • 운영 체제의 핵심 기능은 DLL로 구현됨. (예: kernel32.dll).
  2. 플러그인 시스템:
    • 소프트웨어 확장성을 위해 플러그인 DLL을 로드.
  3. COM을 통한 컴포넌트 사용:
    • 웹 브라우저에서 ActiveX를 통한 미디어 재생.

정리

  • DLL: 동적 연결 라이브러리로 코드 재사용성과 프로그램 크기 감소에 도움.
  • COM: 재사용 가능한 컴포넌트를 작성 및 호출하기 위한 마이크로소프트의 기술.
  • DLL은 COM을 담는 컨테이너 역할을 하며, 다양한 프로그래밍 환경에서 필수적인 역할을 수행.

+ Recent posts