Поделиться через


Импорт в приложение с помощью __declspec(dllimport)

Обновлен: Ноябрь 2007

О программе, которая использует открытые символы, определенные библиотекой DLL, говорят, что она импортирует их. При создании файлов заголовка для приложений, использующих библиотеки DLL, используйте __declspec(dllimport) для объявления открытых символов. Ключевое слово **__declspec(dllimport)**работает вне зависимости осуществлен ли экспорт с помощью DEF-файлов, или с помощью ключевого слова __declspec(dllexport).

Чтобы сделать код более читаемым, следует определить макрос для __declspec(dllimport), а затем использовать макрос для объявления каждого импортируемого символа:

#define DllImport   __declspec( dllimport )

DllImport int  j;
DllImport void func();

Использование __declspec(dllimport) является необязательным при объявлении функций, хотя компилятор выдает более эффективный код, когда данное ключевое слово используется. Вместе с тем, следует использовать __declspec(dllimport), чтобы исполняемый файл, получил доступ к открытым символам и объектам библиотеки DLL. Обратите внимание на то, что пользователям библиотеки DLL также необходимо связаться с библиотекой импорта.

Можно пользоваться одним и тем же файлом заголовка как для библиотеки DLL, так и для клиентского приложения. Чтобы это сделать, используйте специальный символ препроцессора, который указывает, что строится библиотека DLL или клиентское приложение. Пример.

#ifdef _EXPORTING
   #define CLASS_DECLSPEC    __declspec(dllexport)
#else
   #define CLASS_DECLSPEC    __declspec(dllimport)
#endif

class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };

Выполняемые задачи

Дополнительные сведения

См. также

Основные понятия

Импорт в приложение