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