Что значит __declspec(dllexport)
Искал информацию про __declspec(dllexport), правильно ли я понимаю, что этот метод позволяет, где-то из .dll вызвать функцию?
Например, в .dll есть функция void print()
которая что-то выводит.
Если я вызову у себя __declspec(dllexport) void print() тогда эта функция сработает у меня, и выведет что-то так же у меня?
Ответы (1 шт):
__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).