About DLL

1143 단어 dll
동적 연결 라이브러리의 두 가지 방식은?답: DLL의 함수를 호출하는 방법은 두 가지가 있습니다. 1. 불러올 때 동적 링크(load-time dynamic linking), 모듈은 어떤 내보내기 함수를 명확하게 호출하여 로컬 함수처럼 만듭니다.이렇게 하려면 링크가 필요할 때 해당 함수가 있는 DLL의 가져오기 라이브러리를 링크하고, 가져오기 라이브러리는 DLL을 로드하는 데 필요한 정보와 DLL 함수를 시스템에 제공합니다.2. 런타임 동적 링크(run-time dynamic linking), 런타임 시 LoadLibrary 또는 Loa dLibrary Ex 함수를 사용하여 DLL을 로드할 수 있습니다.DLL을 불러오면 모듈은 GetProcAddress를 호출하여 DLL 함수의 출구 주소를 얻을 수 있으며, 되돌아오는 함수 바늘을 통해 DLL 함수를 호출할 수 있습니다.이렇게 하면 FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName) 라이브러리 파일을 가져오는 것을 피할 수 있다.이 함수는 dll의handler hModule와 함수의 이름인lpProcName을 입력합니다.호출을 위한 함수 바늘을 되돌려줍니다.아래의 예를 보시오
typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);

...

HINSTANCE hDLL;               // Handle to DLL

LPFNDLLFUNC1 lpfnDllFunc1;    // Function pointer

DWORD dwParam1;

UINT  uParam2, uReturnVal;

hDLL = LoadLibrary("MyDLL");

if (hDLL != NULL)

{

lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,

"DLLFunc1");

if (!lpfnDllFunc1)

{

// handle the error

FreeLibrary(hDLL);

return SOME_ERROR_CODE;

}

else

{

// call the function

uReturnVal = lpfnDllFunc1(dwParam1, uParam2);

}

}

좋은 웹페이지 즐겨찾기