2016-09-02 5 views
0

Кто-то сказал мне, что если вы хотите экспортировать библиотеку, вам нужно использовать __declspec(dllexport), а когда кто-то использует библиотеку, ему необходимо добавить __declspec(dllimport). Но сегодня я обнаружил, что это необязательно.Почему мы используем «__declspec (dllimport)», когда это кажется бесполезным?

Зачем нам нужен __declspec(dllimport)?

+0

Все, что вы могли бы узнать о экспорте/импорте DLL: https://blogs.msdn.microsoft.com/oldnewthing/20060727-04/?p=30333 –

+0

Потому что Microsoft. –

ответ

1

От documentation:

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

+0

Спасибо. Но меня интересует, что означает «общие символы и объекты данных DLL». Вы имеете в виду глобальную или общественную часть в классе, верно? – UAG515

+0

Помимо функций вы можете экспортировать данные и классы. Именно это подразумевается под этим текстом. –