본문 바로가기

IT/C#, NHibernate

DLL 종류

반응형

DLL에는 2가지 종류가 존재 한다.

 - 이 글은 msdn에 있는 내용을 나름 요약한 것입니다. - 

1. 정적 MFC 링크하는 DLL, 2. 동적 MFC 링크하는 DLL

* 정적 MFC 링크하는 DLL

 특징으로는 다음과 같다.


 - C, C++, 파스칼, visual Basic 등 모든 언어로 실행 파일을 만들수 있다 . 즉 MFC 응용 프로그램이 아니여도 된다. 

- 이것은 별도의 정적 연결 라이브러리 버전이 필요하지 않다

 - 기호는 대개 표준 C 인터페이스를 사용하여 기본 DLL에 사용된다. 

대게 다음과같은 함수 선언형식을 사용한다.


extern "C" __declspec(dllexport) MyExportedFunction( );  




* 동적 MFC 링크하는 DLL

특징으로는 다음과 같다.


 - MFC를 내부적으로 사용하는 DLL이며, MFC 혹은 비MFC 실행 파일에 의애 호출된다. 

 - MFC의 동적 연결 라이브러리 버전으로 빌드 된다.

 - 처음에 AFX_MANAGE_STATE 매크로를 추가해야 한다.

 - Visual C++ 4.0에서 도입된 방식의 DLL 이다.

 - C, C++, 파스칼, visual Basic 등 모든 언어로 실행 파일을 만들수 있다 . 즉 MFC 응용 프로그램이 아니여도 된다. 

 - 정적 링크되는 기본 DLL과 달리 이것은 공유 DLL, MFC DLL 에 동적으로 링크 된다.




DLL 링크 방법은 2가지로 나뉜다. Implicit, Explicit 으로 나뉜다.


* Implicit(암시적) 방식

프로그램이 시작하면서 로드하는 방식이다. 여기에는 DLL과 컴파일할 때 설정해주는 함수명이 선언된 해더파일(*.H), 링크할 때 가져올 라이브리리 파일(LIB)가 있어야 한다.


* Explicit(명시적) 방식

Implicit 방식과 다르게, DLL, *.h, *.lib 파일이 필요 없다. 간편하게 로드하여 사용하는 방식이다.!!!!!

여기에는 LoadLibrary(), GetProcAddress(), FreeLibrary()함수가 사용된다.