Łączenie jawne

Podczas jawnego łączenia, aplikacje muszą wykonać wywołanie funkcji w celu jawnego załadowania biblioteki DLL w czasie wykonywania.Aby jawnie utworzyć łącze do biblioteki DLL, aplikacja musi:

  • Wywołać LoadLibrary (lub podobną funkcję) aby załadować bibliotekę DLL i uzyskać uchwyt modułu.

  • Wywołać GetProcAddress aby uzyskać wskaźnik funkcji do każdej eksportowanej funkcji, którą aplikacja chce wywołać.Ponieważ aplikacje wywołują funkcje DLL za pomocą wskaźnika, kompilator nie generuje zewnętrznych odwołań, więc nie trzeba łączyć z biblioteką importu.

  • Wywołać FreeLibrary po zakończeniu akcji z biblioteką DLL.

Na przykład:

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);
   }
}

Co chcesz zrobić?

O czym chcesz się dowiedzieć więcej?

Zobacz też

Koncepcje

Łączenie pliku wykonywalnego z biblioteką DLL