Sdílet prostřednictvím


Explicitní propojení

Při použití explicitního propojení musí aplikace provést volání funkce, aby explicitně za běhu načetla knihovnu DLL. Chcete-li se explicitně propojit na knihovnu DLL, aplikace musí:

  • Volat LoadLibrary (nebo podobnou funkci), aby načetla knihovnu DLL a získala popisovač modulu.

  • Volat GetProcAddress, aby získala ukazatel na každou exportovanou funkci, kterou chce volat. Protože aplikace volají funkce knihovny DLL prostřednictvím ukazatele, kompilátor negeneruje externí odkazy, takže není nutné propojení s importní knihovnou.

  • Volat FreeLibrary po dokončení práce s knihovnou DLL.

Příklad:

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 chcete udělat?

Co chcete vědět více?

Viz také

Koncepty

Propojení spustitelného souboru s knihovnou DLL