dllexport, dllimport

Блок, относящийся только к системам Майкрософт

dllexportdllimport Атрибуты класса хранилища — это расширения, связанные с корпорацией Майкрософт, на языках C и C++. Их можно использовать для экспорта функций, данных и объектов в библиотеку DLL или импорта из такой библиотеки.

Синтаксис

__declspec( dllimport ) declarator
__declspec( dllexport ) declarator

Замечания

Эти атрибуты явно определяют интерфейс DLL для ее клиента, который может быть исполняемым файлом или другой библиотекой DLL. Объявление функций в виде dllexport исключения необходимости в файле определения модуля (.def) по крайней мере в отношении спецификации экспортированных функций. Атрибут dllexport заменяет __export ключевое слово.

Если класс __declspec(dllexport)помечен, все специализации шаблонов классов в иерархии классов неявно помечены как __declspec(dllexport). Это означает, что шаблоны классов явно создаются и члены класса должны быть определены.

dllexport функция предоставляет функцию с его украшенным именем, иногда называемой "имям" Для функций C++ декорированное имя содержит дополнительные символы, которые кодируют сведения о типе и параметрах. Функции или функции C, объявленные следующими extern "C" правилами оформления имен C. Дополнительные сведения о украшении имен в коде C/C++ см. в разделе "Декорированные имена".

Чтобы экспортировать неоценированное имя, можно связать с помощью файла определения модуля (.def), который определяет неоценённое имя в EXPORTS разделе. Дополнительные сведения см. в разделе EXPORTS. Еще одним способом экспорта неоцененных имен является использование #pragma comment(linker, "/export:alias=decorated_name") директивы в исходном коде.

При объявлении или dllimportиспользовании dllexport расширенного синтаксиса атрибутов и __declspec ключевое слово.

Пример

// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();

Кроме того, чтобы сделать код более понятным, можно использовать макроопределения:

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;

Дополнительные сведения см. в разделе:

Завершение блока, относящегося только к системам Майкрософт

См. также

__declspec
Ключевые слова