dllexport
, dllimport
Specifické pro Microsoft
Atributy dllexport
třídy úložiště jsou rozšíření jazyka C a dllimport
C++ specifická pro Microsoft. Můžete je použít k exportu a importu funkcí, dat a objektů do nebo z knihovny DLL.
Syntaxe
__declspec( dllimport )
declarator
__declspec( dllexport )
declarator
Poznámky
Tyto atributy explicitně definují rozhraní knihovny DLL pro svého klienta, což může být spustitelný soubor nebo jiná knihovna DLL. Deklarování funkcí tak, jak dllexport
eliminuje potřebu souboru definice modulu (.def
) alespoň s ohledem na specifikaci exportovaných funkcí. Atribut dllexport
nahradí __export
klíčové slovo.
Pokud je třída označena __declspec(dllexport)
, všechny specializace šablon tříd v hierarchii třídy jsou implicitně označeny jako __declspec(dllexport)
. To znamená, že šablony tříd jsou explicitně vytvořena a členy třídy musí být definovány.
dllexport
funkce zveřejňuje funkci s jeho zdobeným názvem, někdy označovaným jako "mangling". U funkcí jazyka C++ obsahuje zdobený název další znaky, které kódují informace o typu a parametru. Funkce jazyka C nebo funkce, které jsou deklarovány podle extern "C"
pravidel dekorací názvů C. Další informace o dekoraci názvů v kódu C/C++ naleznete v tématu Dekorované názvy.
Pokud chcete exportovat nepojištěný název, můžete ho propojit pomocí souboru definice modulu (.def
), který definuje nedekódovaný název v oddílu EXPORTS
. Další informace najdete na webu EXPORTS
. Dalším způsobem, jak exportovat nekódovaný název, je použití #pragma comment(linker, "/export:alias=decorated_name")
direktivy ve zdrojovém kódu.
Když deklarujete dllexport
nebo dllimport
, musíte použít rozšířenou syntaxi atributu __declspec
a klíčové slovo.
Příklad
// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();
Pokud chcete, aby byl kód čitelnější, můžete také použít definice maker:
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;
Další informace naleznete v tématu:
END Microsoft Specific
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro