dllexport
, dllimport
Блок, относящийся только к системам Майкрософт
dllexport
dllimport
Атрибуты класса хранилища — это расширения, связанные с корпорацией Майкрософт, на языках 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")
директивы в исходном коде.
При объявлении 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;
Дополнительные сведения см. в разделе:
Определение встроенных функций C++ с помощью
dllexport
иdllimport
Использование и
dllexport
использованиеdllimport
классов C++
Завершение блока, относящегося только к системам Майкрософт