dllexport
, dllimport
Specyficzne dla firmy Microsoft
Atrybuty dllexport
klasy magazynu i dllimport
to rozszerzenia specyficzne dla firmy Microsoft dla języków C i C++. Można ich użyć do eksportowania i importowania funkcji, danych i obiektów do lub z biblioteki DLL.
Składnia
__declspec( dllimport )
declarator
__declspec( dllexport )
declarator
Uwagi
Te atrybuty jawnie definiują interfejs biblioteki DLL dla klienta, który może być plikiem wykonywalny lub inną biblioteką DLL. Deklarowanie funkcji eliminuje dllexport
konieczność użycia pliku definicji modułu (.def
) przynajmniej w odniesieniu do specyfikacji eksportowanych funkcji. Atrybut dllexport
zastępuje __export
słowo kluczowe.
Jeśli klasa jest oznaczona __declspec(dllexport)
, wszelkie specjalizacje szablonów klas w hierarchii klas są niejawnie oznaczone jako __declspec(dllexport)
. Oznacza to, że szablony klas są jawnie tworzone, a składowe klasy muszą być zdefiniowane.
dllexport
funkcja uwidacznia funkcję z jej ozdobioną nazwą, czasami znaną jako "mangling nazwy". W przypadku funkcji języka C++ nazwa ozdobiona zawiera dodatkowe znaki, które kodują informacje o typie i parametrach. Funkcje lub funkcje języka C, które są deklarowane zgodnie z extern "C"
regułami dekoracji nazw języka C. Aby uzyskać więcej informacji na temat dekoracji nazw w kodzie C/C++, zobacz Nazwy ozdobione.
Aby wyeksportować nieukodowaną nazwę, możesz połączyć za pomocą pliku definicji modułu (.def
), który definiuje nieukodowaną nazwę w EXPORTS
sekcji. Aby uzyskać więcej informacji, zobacz EXPORTS
. Innym sposobem eksportowania nieukodowanej nazwy jest użycie #pragma comment(linker, "/export:alias=decorated_name")
dyrektywy w kodzie źródłowym.
W przypadku deklarowania dllexport
lub dllimport
, należy użyć składni atrybutu rozszerzonego i słowa kluczowego __declspec
.
Przykład
// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();
Alternatywnie, aby kod był bardziej czytelny, możesz użyć definicji makr:
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;
Aby uzyskać więcej informacji, zobacz:
END Microsoft Specific
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla