Экспорт функции в DLL без класса

Есть ли способ экспортировать только функцию DLL cos в учебники, они всегда экспортируют классы с чем-то вроде:

 static __declspec(dllexport) double Add(double a, double b);

Внутри класса приведенное выше утверждение не вызывает никаких проблем, но без класса, который он дает:

 dllexport/dllimport requires external linkage

Ответ 1

Проблема заключается в "статическом" квалификаторе. Вам нужно удалить его, потому что это означает неправильную вещь в этом контексте. Попробуйте просто:

__declspec(dllexport) double Add(double a, double b);

Это то, что вам нужно иметь в своем заголовочном файле при компиляции DLL. Теперь для доступа к функции из программы, использующей DLL, вам нужно иметь файл заголовка с этим:

double Add(double a, double b);

Вы можете использовать заголовочный файл тот же для обеих целей, если вы используете #ifdefs:

#ifndef MYDLL_EXPORT
  #define MYDLL_EXPORT
#endif

MYDLL_EXPORT double Add(double a, double b);