티스토리 뷰

Programing

DLL

akon47 2011. 8. 7. 19:59

컴퓨터를 구체적으로 안배우신 분들도 DLL이란것들 많이 들어보고 보셨을겁니다.
어떤 프로그램을 설치하고 그 설치폴더에 가보면 많은 DLL파일들이 있죠.

그럼 이 DLL확장자를 가진 파일들이 어떤 역할을 하는지 알아봅시다.


라이브러리
프로그램을 C나 C++로 작성하고 컴파일을 하고 실행파일이 만들어지면 그 실행파일을 실행하면 작성한대로 실행이 됩니다.

작성을 하다보면 scanf나 printf, strcpy 등 여러가지 함수들을 사용하게 되는데요, 이런 함수를 사용하기 위해서 우리가 직접 저 함수들을 만들거나 하지는 않습니다. 단순히 가져다가 쓰기만하죠.

저런 함수들은 모두 라이브러리에 포함된 것들이고, 우리는 저런 함수들을 사용하기 위해 만들필요도 없고 자세한 로직을 몰라도 쓰는방법만 알아내서 사용햇습니다.

이런 라이브러리들은 컴파일시에 함수의 코드가 실행파일이 복사되어서 작동되는 것 입니다.
이것을 정적라이브러리 라고 합니다.

DLL

위에서 정적라이브러리에 대해서 알아보앗는데 이제는 동적라이브러리에대해서 알아보겟습니다.
DLL의 약자는 (dynamic linking library)즉 동적 라이브러리라는 뜻을 가지고 있습니다.

이러한 동적라이브러리는, 실행프로그램에서는 호출할 함수의 정보만 포함이 되어있고, 실제 함수 코드는 복사되지 않습니다. 따라서 실행파일의 크기가 작아지게 되죠.

하지만 실행 파일은 함수의 호출정보만 가지고 있기때문에 실행파일만으로 프로그램의 정상동작은 기대하기 어렵습니다.

따라서 DLL파일이 꼭 필요합니다.

윈도우즈 프로그램들은 DLL을 아주 빈번하게 자주 사용됩니다. 심지어는 윈도우API함수 자체도 KERNEL32.DLL, GDI32.DLL 등 모두 DLL에 의해서 제공되는 것들입니다.

DLL의 특징
1. 한 코드를 여러 프로그램이 사용하기 때문에 메모리가 절약된다.
2. DLL을 사용하는 프로그램은 크기가 작다.
3. DLL의 교체만으로도 프로그램의 성능향상이 가능하다.
4. 리소스의 교체가 가능하다. (DLL은 함수뿐만 아니라 리소스도 포함될 수 있다.)
5. 디버깅이 용이하다.
6. 혼합프로그래밍이 가능하다. (여러가지 언어를 사용하여 프로그램을 개발할 수 있다.)
7. 프로그래머끼리 작업 분담이 가능해진다.





이글을 작성하기 위하여 참고한 책: 윈도우API 정복(김상형 저)

'Programing' 카테고리의 다른 글

유저레벨 API후킹 탐지  (0) 2012.08.27
DLL  (0) 2011.08.07
사이트차단 프로그램 해제 방법.  (5) 2010.08.31
OpenCV - Surf 물체인식..  (3) 2009.11.08
댓글
댓글쓰기 폼