windows - hvorfor skal vi eksportere en klasse i C ++?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er en nybegynder, så vær så venlig at bære med mig, hvis det lyder for trivielt. Da jeg søgte på nettet for dette, fik jeg resultater, der viser, hvordan man gør det. Mit spørgsmål er, hvorfor vi gør det i første omgang?

Bedste reference


Dette er specifikt for Windows-platformen, når du 'udvikler C ++ DLL'er.


Du skal bruge \_\_declspec (dllexport) modifikatoren for at din klasse og dens metoder skal vises på den eksporterede symbolliste for din DLL.


På denne måde kan eksekverbare filer, der bruger din DLL, instancere og kalde metoder i disse klasser.


Men du skal sørge for, at den eksekverbare og DLL'en er kompileret med den samme version af den samme compiler, fordi C ++-symboler eksporteres ved hjælp af et relativt komplekst navn manglende kodning (du kan se det ved hjælp af depends.exe), hvilket format varierer fra en kompilator til en anden. [1]

Andre referencer 1


Du behøver ikke at eksportere noget, medmindre du opretter en DLL. I så fald kan du bruge attributten dllexport som et alternativ til den 'gamle skole' måde at bruge .def filer på. [2] [3]

Andre referencer 2


Teknisk kan du ikke eksportere en klasse, kun funktioner.
Du kan dog på et klasseniveau angive, at alle funktioner skal eksporteres.


Eksport af en funktion betyder, at den funktion kan kaldes uden for den aktuelle eksekverbare.


Dette er nødvendigt, når du skriver en dll for eksempel, som er en separat enhed.