Import do aplikace s použitím deklarace __declspec(dllimport)
Program, který používá veřejné symboly definované knihovnou DLL, se říká, že je importuje. Když vytváříte soubory hlaviček pro aplikace, které používají vaše knihovny DLL k sestavení, použijte __declspec(dllimport)
u deklarací veřejných symbolů. Klíčové slovo __declspec(dllimport)
funguje bez ohledu na to, jestli exportujete se soubory .def nebo s klíčovým slovem __declspec(dllexport)
.
Pokud chcete, aby byl kód čitelnější, definujte makro a __declspec(dllimport)
pak pomocí makra deklarujte každý importovaný symbol:
#define DllImport __declspec( dllimport )
DllImport int j;
DllImport void func();
Použití __declspec(dllimport)
je volitelné u deklarací funkcí, ale kompilátor vytvoří efektivnější kód, pokud použijete toto klíčové slovo. Musíte však použít __declspec(dllimport)
pro import spustitelný soubor pro přístup k veřejným datovým symbolům a objektům knihovny DLL. Všimněte si, že uživatelé knihovny DLL stále potřebují propojit s knihovnou importu.
Stejný hlavičkový soubor můžete použít pro knihovnu DLL i klientskou aplikaci. K tomu použijte speciální symbol preprocesoru, který označuje, zda vytváříte knihovnu DLL nebo vytváříte klientskou aplikaci. Příklad:
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };