dllexport, dllimport

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

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

__declspec( dllimport ) declarator 
__declspec( dllexport ) declarator

Заметки

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

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

Атрибут dllexport функции предоставляет функцию с ее декорированным именем. Для функций C++ сюда входит видоизменение имени. Для функций C или функций, объявленным с модификатором extern "C", сюда входит зависящее от платформы декорирование, основанное на соглашении о вызовах. Если вы не хотите использовать декорирование имен, следует использовать файл DEF (ключевое слово EXPORTS ).

При объявлении dllexport или dllimport необходимо использовать расширенный синтаксис атрибутов и ключевое слово __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;

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

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

См. также

Ссылки

__declspec

Ключевые слова в C++