본문 바로가기
개발, IT

DLL 종류 및 링크방법

by Nabi™ 2008. 6. 20.
DLL 종류

1. 정규 DLL
정규 DLL 이란 Win32 프로그래밍 환경으로 설정된다는 것입니다.
즉 함수를 호출 할 때 클래스 형태의 함수를 호출하는 것이 아니고 C 함수 형태로 호출할 수 있는 것입니다.
정규 DLL은 MFC를 사용하지 않는 다른 프로그램과도 원활하게 연결될 수 있는 DLL 이라고 보면 됩니다.
Win32 SDK의 DLL 구조를 그대로 사용하기 때문입니다. 그러나 내부적으로는 클래스를 사용할 수 있습니다.
정규 DLL은 MFC 라이브러리를 사용할 경우, 공유하거나 자체적으로 가지고 있거나 둘중 하나를 선택할 수 있습니다.

- Regular DLL with MFC statically linked
MFC 라이브러리를 LIB 형태로 링크하여 DLL을 만드는 것
- Regular DLL using shared MFC DLL
MFC 라이브러리를 DLL 형태로 연결하는 것

2. 확장 DLL
확장 DLL 이란 MFC 전용 DLL을 말합니다.
메인 프로그램에서 DLL을 호출할 때 클래스로 호출할 수 있고, MFC 구조체와 원활하게 연결될 수 있는 구조체로 되어 있습니다. 쉽게 말해서 DLL 이라고 생각하지 않고 그냥 클래스 사용하듯이 사용하면 된다는 것이죠.
클래스 자체를 DLL로 만들고 이것을 오로지 MFC 프로그램과 연결만 하려면 확장 DLL을 사용하는 것이 좋습니다.


DLL 링크

DLL을 링크하는 방법은 Implicit 링킹과 Explicit 링킹의 두가지가 있습니다.

1. Implicit 링킹

Implicit 링킹은 프로그램이 시작되면서 해당 DLL을 바로 로드하는 방법입니다.
DLL을 이용하여 프로그램을 제작하기 위해선 다음과 같은 3가지 파일이 필요합니다.

a. 실질적으로 프로그램이 실행될 때 로드되는 DLL 파일 (*.DLL)
b. 컴파일할 때 설정해 주는 함수명이 들어 있는 헤더 파일 (*.H)
c. 링크할 때 메인 프로그램에 빈 함수를 설정하는 LIB 파일 (*.LIB)

2. Explicit 링킹

Explicit 링킹이란 Implicit 링킹처럼 세가지 파일이 필요없이 단순하게 DLL을 이용하여 로드할 수 있는 방법을 말합니다. 이방법으로 DLL을 로드할 경우  세 개의 함수를 이용합니다.

LoadLibrary()
GetProcAddress()
FreeLibrary()
좋은정보가 되셨다면 아래 한번 클릭해주세요^^


댓글