2012-02-27 5 views
11

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

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

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

dllexport/dllimport requires external linkage 

ответ

14

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

__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); 
Смежные вопросы