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ż

__declspec
Słowa kluczowe