본문 바로가기

Programming/Windows Visual C++

.lib와 .dll의 차이

  • 동적 라이브러리(.dll)

    • 프로그램 실행 시 필요시만 DLL 파일에서 함수를 참조
    • 프로그램 실행 시 DLL을 모두 로드하지 않기 때문에 프로그램 로딩 시간이 단축
    • 함수 업그레이드 시 해당 DLL만 수정 배포하면 되기때문에 용이
    • 소스 외부 유출 방지 효과
    • .exe 파일 만들때 필요한 파일: .h,.lib (*.dll 참조 용). dll자체는 필요 없다.
    • .exe 파일 실행할 할 때 필요한 파일: *.dll (배포할 때 *.dll 필요)
    • dll 제작 시 lib도 같이 생성됨(dll 참조용)
  • 정적 라이브러리(.lib)

    • 필요한 함수를 프로그램 코드에 붙여 컴파일 시 프로그램 자체에서 참조
    • 프로그램 실행 후 빠른 처리시간
    • 컴파일 시 .lib는 .exe내부에 모두 녹아 들어가므로 프로그램 .exe파일만 있으면 .lib없이 실행 가능(하나의 파일만 있으면 됨)
    • 소스 외부 유출 방지 효과
    • .exe 파일 만들때 필요한 파일: .h,.lib (별도의 *.dll 필요 없음)
  • 라이브러리 dependency찾기

    • 특정 프로그램을 실행시키려면 특정 라이브러리가 미리 설치되어있어야 하는 경우가 있는데 이 때 dependency walker라는 프로그램을 사용해서 어떤 dependency를 가지고 있는지 확인해보자.