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

Я пытаюсь скомпилировать файл cpp, используя mex (changeanalysis.cpp). У меня есть Matlab R2012a, Xcode 4.6 на MAC OS X 10.7. В файле changeanalysis.cpp включен aef_global_dllexport.h. Некоторая часть aef_global_dllexport.h выглядит следующим образом:

    ////////////////////////
// DLL EXPORT FUNCTIONS
////////////////////////
#define DLLEXPORT _declspec(dllexport)DLLEXPORT double maha_dist_3D_ex(   double          x,
double          y,
double          z,
double*         mean,
double**        icovm);

DLLEXPORT int matrix_inv_ND_ex(     double**        matND,
double&         det,
int             Dim);

DLLEXPORT int matrix_copy3x3_ex(    double**        x,
double**        y);
.
.
.

Когда я компилирую файл changeanalysis.cpp, я получаю следующее сообщение об ошибке в командной строке:

mex -I «/ Пользователи / marzi / Documents / MATLAB» changeanalysis.cpp

В файле, включенном из changeanalysis.cpp: 58:

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:7: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:13: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:17: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:20: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:22: ошибка: ожидаемый конструктор, деструктор или преобразование типа перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:24: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:29: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:31: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:50: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:75: ошибка: ожидаемый конструктор, деструктор или преобразование типа перед символом ‘(‘
/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:100: ошибка: ожидаемый конструктор, деструктор или преобразование типов перед символом ‘(‘

mex: не удалось скомпилировать changeanalysis.cpp.

Ошибка при использовании mex (строка 206)
Невозможно завершить успешно.

Кто-нибудь знает, как это исправить или в чем причина этой ошибки?

Благодарю.

1

Решение

Вы используете нотацию Windows для объявления экспортируемых функций. Обозначения, которые вы используете, должны зависеть от платформы. Вы можете быть кросс-платформенным совместимым, если вы делаете это:

#if defined _WIN32 || defined __CYGWIN__ || defined __MINGW32__
#ifdef BUILDING_DLL
#ifdef __GNUC__
#define DLL_PUBLIC __attribute__ ((dllexport))
#else
#define DLL_PUBLIC __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
#endif
#else
#ifdef __GNUC__
#define DLL_PUBLIC __attribute__ ((dllimport))
#else
#define DLL_PUBLIC __declspec(dllimport) // Note: actually gcc seems to also supports this syntax.
#endif
#endif
#define DLL_LOCAL
#else
#if __GNUC__ >= 4
#define DLL_PUBLIC __attribute__ ((visibility ("default")))
#define DLL_LOCAL  __attribute__ ((visibility ("hidden")))
#else
#define DLL_PUBLIC
#define DLL_LOCAL
#endif
#endif
0

Другие решения


По вопросам рекламы [email protected]