Delen via


Importeren en exporteren

U kunt openbare symbolen importeren in een toepassing of functies exporteren vanuit een DLL met behulp van twee methoden:

  • Een moduledefinitiebestand (.def) gebruiken bij het bouwen van het DLL-bestand

  • De trefwoorden __declspec(dllimport) of __declspec(dllexport) in een functiedefinitie in de hoofdtoepassing gebruiken

Een .def-bestand gebruiken

Een moduledefinitiebestand (.def) is een tekstbestand met een of meer module-instructies die verschillende kenmerken van een DLL beschrijven. Als u __declspec(dllimport) of __declspec(dllexport) niet gebruikt om de functies van een DLL te exporteren, heeft de DLL een .def-bestand nodig.

U kunt .def-bestanden gebruiken om te importeren in een toepassing of om te exporteren vanuit een DLL.

__declspec gebruiken

U hoeft __declspec(dllimport) niet te gebruiken om uw code correct te compileren, maar door dit te doen, kan de compiler betere code genereren. De compiler kan betere code genereren omdat deze kan bepalen of een functie al dan niet bestaat in een DLL, waardoor de compiler code kan produceren die een indirectieniveau overslaat dat normaal gesproken aanwezig is in een functie-aanroep die een DLL-grens overschrijdt. U moet echter gebruiken __declspec(dllimport) om variabelen te importeren die worden gebruikt in een DLL.

Als de EXPORTS-sectie van het juiste .def-bestand correct is, is __declspec(dllexport) niet vereist. __declspec(dllexport) is toegevoegd om een eenvoudige manier te bieden om functies te exporteren uit een .exe- of .dll-bestand zonder een .def-bestand te gebruiken.

De Win32 Portable Executable-indeling is ontworpen om het aantal pagina's te minimaliseren dat moet worden aangeraakt om de importbewerkingen te herstellen. Hiervoor worden alle importadressen voor elk programma op één plaats geplaatst, de importadrestabel genoemd. Hierdoor kan het laadprogramma slechts één of twee pagina's wijzigen bij het openen van deze importbewerkingen.

Wat u wilt doen?

Zie ook

C/C++-DLL's maken in Visual Studio