팁!팁!팁!/프로그래밍

DLL 파일 만들기와 이용

쿨캣7 2009. 6. 24. 14:56
728x90
반응형
윈도우 프로그램을 작성하다보면 DLL 파일을 이용할 때가 있다.
테스트 목적의 간단한 DLL 파일을 만들고 로딩하는 방법은 다음과 같다.


1. DLL 만들기

기본적인 DllMain 만 덜렁있으면 아래 define 을 정의한다.

#define EXPORT extern "C" __declspec(dllexport)

자신이 작성하려는 함수를 작성한다.
(MyFunc1 은 MessageBox를 이용해 인자값으로 메시지창을 띄우는 간단한 함수이다.)

EXPORT int MyFunc1( char *pString )
{
  MessageBox( NULL, pString, "DEMO", MB_ICONWARNING );
  return TRUE;
}


컴파일하면 외부에서 MyFunc1 을 호출 할 수 있다.

이때 "C"를 빼고 __declspec(dllexport) 로 직접 해줄 경우 export 함수 뒤에 이상한 값이 붙어서 로딩할 때 조금 귀찮게 된다.
- "C" 스타일로 진행하면 함수명이 이상하게 되는걸 예방할 수 있다.



"C" 없이 컴파일된 DLL 파일의 export 함수를 보면 KeyboardProc가 ?KeyboardProc@@YGHJIJ@Z처럼 된다.


하지만, CALLBACK 형태의 경우는 "C"가 있어도 _KeyboardProc@12 와 같이 처음 의도한 KeyboardProc가 되지는 않는다.











2. DLL 이용

DLL을 이용하는 방법에는 크게 암시적(implicit) 방법 혹은 임포트(import) 라이브러리 연결 방법와 명시적(explicit) 방법이 있다고 한다. 암시적 방법은 컴파일시 나오는 중간 LIB를 링크시켜줘야 한
다. 따라서, 이 방법보다는 명시적 방법이 더 간편하다.

명시적 방법은 크게 다음과 같이 사용된다.

(1) LoadLibrary를 이용한 DLL 로드

(2) GetProcAddress를 이용한 함수 주소 얻기

(3) FreeLibrary를 이용한 DLL 언로드






728x90
반응형