Sdílet prostřednictvím


Import dat pomocí __declspec(dllimport)

V případě dat, která používají __declspec(DllImport), je výhodná položka ta, která odebere úroveň dereference. Při importu dat z knihovny DLL musíte stále projít tabulku importních adres. Před __declspec(DllImport) bylo nutné si pamatovat, abyste provedli vyšší úroveň dereference, když přistupujete k datům eportovaným z knihovny DLL:

// project.h
#ifdef _DLL   // If accessing the data from inside the DLL
   ULONG ulDataInDll;

#else         // If accessing the data from outside the DLL
   ULONG *ulDataInDll;
#endif

Mohli byste pak exportovat data ve vašem souboru .DEF:

// project.def
LIBRARY project
EXPORTS
   ulDataInDll   CONSTANT

a přistupovat k němu mimo knihovnu DLL:

if (*ulDataInDll == 0L) 
{
   // Do stuff here
}

Když označíte data jako __declspec(DllImport), kompilátor automaticky generuje dereferenční kód za vás. Již se nemusíte obávat výše uvedených kroků. Jak bylo uvedeno dříve, nepoužívejte deklarace __declspec(DllImport) na data při vytváření knihovny DLL. Funkce v rámci knihovny DLL nepoužívají tabulku importních adres pro přístup k datovému objektu; proto nebudete mít k dispozici vyšší úroveň dereference.

Chcete-li automaticky exportovat data z knihovny DLL, použijte tuto deklaraci:

__declspec(dllexport) ULONG ulDataInDLL;

Viz také

Koncepty

Import do aplikace