Что значит __declspec(dllexport)

Искал информацию про __declspec(dllexport), правильно ли я понимаю, что этот метод позволяет, где-то из .dll вызвать функцию?

Например, в .dll есть функция void print() которая что-то выводит.

Если я вызову у себя __declspec(dllexport) void print() тогда эта функция сработает у меня, и выведет что-то так же у меня?


Ответы (1 шт):

Автор решения: Alex F

__declspec(dllexport) означает, что функция экспортируется из Dll. __declspec(dllimport) означает, что функция импортируется из Dll. Когда компилируется Dll, экспортные функции и классы должны быть отмечены как __declspec(dllexport). Когда заголовок (h-file) компилируется в проекте, использующем Dll, те же функции и классы должны быть отмечены как __declspec(dllimport).

Обычно это делается следующим образом. В проекте Dll определяют символ препроцессора, например MYDLL_EXPORTS. Функции определяются так:

#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

MYDLL_API void my_function();

При компиляции Dll my_function определена как __declspec(dllexport), так как символ MYDLL_EXPORTS определен в проекте Dll. В проектах, использующих Dll, та же функция определена как __declspec(dllimport).

→ Ссылка