Eksportowanie z biblioteki DLL przy użyciu opcję __declspec(dllexport)
Wprowadzone Microsoft __export w wersji 16-bitowy kompilator Visual C++, aby umożliwić kompilator automatycznie Generuj nazwy wywozu i umieścić je w pliku .lib.Ten plik .lib następnie można podobnie jak statyczne .lib łącza z biblioteki DLL.
W nowszych wersjach kompilatora, można wyeksportować dane, funkcje, klasy lub klasy funkcji elementów członkowskich z biblioteki DLL przy użyciu opcję __declspec(dllexport) słowa kluczowego.opcję __declspec(dllexport) dodaje dyrektywy eksportu do pliku obiektu, więc nie trzeba użyć pliku .def.
Podczas próby eksportu zdobione nazwy funkcji C++ najbardziej widoczne jest to wygodne.Ponieważ nie istnieje specyfikacja standardowych dekoracji nazwa, nazwy eksportowanych funkcji może się zmieniać wersje kompilatora.Jeśli używasz opcję __declspec(dllexport), ponownej kompilacji DLL i plików exe zależnych jest niezbędne tylko do konta do zmiany konwencji nazewnictwa.
Wiele wyeksportować dyrektyw, takie jak liczby porządkowe, bez nazwy i prywatnych, jest możliwe tylko w pliku .def i jest sposobem określania tych atrybutów bez pliku .def.Jednakże, za pomocą opcję __declspec(dllexport) oprócz .def pliku nie powoduje błędy kompilacji.
Aby wyeksportować funkcji, opcję __declspec(dllexport) słowo kluczowe musi pojawiają się po lewej stronie słowa kluczowego konwencji wywołania, jeśli określono słowa kluczowego.Na przykład:
__declspec(dllexport) void __cdecl Function1(void);
Aby wyeksportować wszystkie dane publicznych członków i funkcji elementów członkowskich w klasie, słowo kluczowe muszą znajdować się na lewo od nazwy klasy w następujący sposób:
class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
[!UWAGA]
__declspec(dllexport)nie można zastosować funkcji __clrcall konwencji wywoływania.
Konstruując biblioteki DLL, zazwyczaj tworzony plik nagłówka, który zawiera prototypy funkcji lub klasy, eksportowania i dodać opcję __declspec(dllexport) do deklaracji w pliku nagłówkowym.Aby zwiększyć czytelność kodu, należy zdefiniować makro dla opcję __declspec(dllexport) i użyć makra z każdego symbolu są eksportowane:
#define DllExport __declspec( dllexport )
opcję __declspec(dllexport) sklepy działać nazwy w tabeli eksportu biblioteki DLL.Jeśli chcesz zoptymalizować rozmiar tabeli, zobacz Eksportowania funkcji DLL, liczba porządkowa raczej niż nazwa.
[!UWAGA]
Podczas przenoszenia kodu źródłowego DLL z Win16 do Win32, należy zastąpić każde wystąpienie __export z opcję __declspec(dllexport).
Jako odniesienie wyszukiwanie pliku nagłówkowym Win32 Winbase.h.Zawiera przykłady __declspec(dllimport) sposób użycia.
Co chcesz zrobić?
Funkcje C++ eksportu do użycia w plików wykonywalnych języka c
Funkcje c eksportu do użycia w c lub C++ języka plików wykonywalnych