Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan exportera data, funktioner, klasser eller klassmedlemsfunktioner från en DLL med hjälp av nyckelordet __declspec(dllexport) .
__declspec(dllexport) lägger till exportdirektivet i objektfilen så att du inte behöver använda en .def-fil.
Den här bekvämligheten är tydligast när du försöker exportera dekorerade C++-funktionsnamn. Eftersom det inte finns någon standardspecifikation för namndekoration kan namnet på en exporterad funktion ändras mellan kompilatorversionerna. Om du använder __declspec(dllexport)behöver du bara kompilera om DLL och beroende .exe filer för att ta hänsyn till eventuella ändringar i namngivningskonventionen.
Många exportdirektiv, till exempel ordningstal, NONAME och PRIVATE, kan endast göras i en .def-fil, och det finns inget sätt att ange dessa attribut utan en .def-fil. Men att använda __declspec(dllexport) förutom att använda en .def-fil orsakar inte byggfel.
Om du vill exportera funktioner måste nyckelordet __declspec(dllexport) visas till vänster om nyckelordet calling-convention om ett nyckelord har angetts. Till exempel:
__declspec(dllexport) void __cdecl Function1(void);
Om du vill exportera alla offentliga datamedlemmar och medlemsfunktioner i en klass måste nyckelordet visas till vänster om klassnamnet på följande sätt:
class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
Anmärkning
__declspec(dllexport) kan inte tillämpas på en funktion med anropskonventionen __clrcall .
När du skapar din DLL skapar du vanligtvis en rubrikfil som innehåller de funktionsprototyper och/eller klasser som du exporterar och lägger till __declspec(dllexport) i deklarationerna i rubrikfilen. Om du vill göra koden mer läsbar definierar du ett makro för __declspec(dllexport) och använder makrot med varje symbol som du exporterar:
#define DllExport __declspec( dllexport )
__declspec(dllexport) lagrar funktionsnamn i DLL:ets exporttabell. Om du vill optimera tabellens storlek kan du läsa Exportera funktioner från en DLL med ordningstal i stället för efter namn.
Vad vill du göra?
Exportera C-funktioner för användning i körbara C- eller C++-språk
Importera till ett program med hjälp av __declspec(dllimport)