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

问题描述 投票:1回答:1

我正在尝试使用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:错误:'('令牌)之前的预期构造函数,析构函数或类型转换

/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:错误:预期的构造函数,析构函数或类型转换'('token /Users/marzi/Documents/MATLAB/aef_global_dllexport.h:100:错误:期望的构造函数,析构函数,或'('标记之前的类型转换)

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

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

有谁知道如何解决这个或这个错误的原因是什么?

谢谢。

c++ matlab dllexport
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.