Dela via


Importera och exportera

Du kan importera offentliga symboler till ett program eller exportera funktioner från en DLL med två metoder:

  • Använd en moduldefinitionsfil (.def) när du skapar DLL-filen

  • Använd nyckelorden __declspec(dllimport) eller __declspec(dllexport) i en funktionsdefinition i huvudprogrammet

Använda en .def-fil

En moduldefinitionsfil (.def) är en textfil som innehåller en eller flera modulinstruktioner som beskriver olika attribut för en DLL. Om du inte använder __declspec(dllimport) eller __declspec(dllexport) exporterar en DLL-fils funktioner kräver DLL-filen en .def-fil.

Du kan använda .def-filer för att importera till ett program eller för att exportera från en DLL.

Använda __declspec

Du behöver inte använda __declspec(dllimport) koden för att kompilera korrekt, men det gör att kompilatorn kan generera bättre kod. Kompilatorn kan generera bättre kod eftersom den kan avgöra om en funktion finns i en DLL eller inte, vilket gör att kompilatorn kan producera kod som hoppar över en indirekt nivå som normalt skulle finnas i ett funktionsanrop som korsade en DLL-gräns. Du måste dock använda __declspec(dllimport) för att importera variabler som används i en DLL.

Med det korrekta EXPORTS-avsnittet i .def-filen, krävs __declspec(dllexport) inte. __declspec(dllexport) lades till för att ge ett enkelt sätt att exportera funktioner från en .exe- eller .dll fil utan att använda en .def-fil.

Win32 Portable Executable format är utformat för att minimera antalet sidor som måste ändras för att åtgärda importer. För att göra detta placerar den alla importadresser för alla program på ett ställe som kallas importadresstabellen. Detta gör att inläsaren bara kan ändra en eller två sidor vid åtkomst till dessa importer.

Vad vill du göra?

Se även

Skapa DLL:er för C/C++ i Visual Studio