错误:'('令牌?之前的预期构造函数,析构函数或类型转换?

时间:2014-07-07 17:44:13

标签: c++ matlab dllexport

我正在尝试使用mex(changeanalysis.cpp)编译cpp文件。我在MAC OS X 10.7上有Matlab R2012a,Xcode 4.6。在文件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“/ Users / marzi / Documents / MATLAB”changeanalysis.cpp

在changeanalysis.cpp中包含的文件中:58:

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:7:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:13:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:17:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:20:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:22:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:24:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:29:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:31:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:50:错误:在'('token

之前的预期构造函数,析构函数或类型转换

/Users/marzi/Documents/MATLAB/aef_global_dllexport.h:75:错误:'('令牌)之前的预期构造函数,析构函数或类型转换 /Users/marzi/Documents/MATLAB/aef_global_dllexport.h:100:错误:在'('token

之前的预期构造函数,析构函数或类型转换

mex:编译'“changeanalysis.cpp”'失败。

使用mex时出错(第206行) 无法成功完成。

有谁知道如何修复此错误或导致此错误的原因是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您正在使用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