Функция экспорта в DLL без класса - PullRequest
12 голосов
/ 27 февраля 2012

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

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

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

 dllexport/dllimport requires external linkage

1 Ответ

18 голосов
/ 27 февраля 2012

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

__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);
...