C++ 错误:在';之前需要构造函数、析构函数或类型转换;(';代币?
我正在尝试使用mex(changealysis.cpp)编译一个cpp文件。我在MAC OS X 10.7上有Matlab R2012a,Xcode 4.6。在changealysis.cpp文件中,包含aef_global_dllexport.h。aef_global_dllexport.h的某些部分如下:C++ 错误:在';之前需要构造函数、析构函数或类型转换;(';代币?,c++,matlab,dllexport,C++,Matlab,Dllexport,我正在尝试使用mex(changealysis.cpp)编译一个cpp文件。我在MAC OS X 10.7上有Matlab R2012a,Xcode 4.6。在changealysis.cpp文件中,包含aef_global_dllexport.h。aef_global_dllexport.h的某些部分如下: //////////////////////// // DLL EXPORT FUNCTIONS //////////////////////// #def
////////////////////////
// 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);
.
.
.
编译文件changelanalysis.cpp时,在命令提示下收到以下错误消息:
mex-I“/Users/marzi/Documents/MATLAB”changealysis.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行)无法成功完成
是否有人知道如何修复此问题,或者此错误的原因是什么
谢谢。您正在使用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
文件
changesanalysis.cpp
是您的文件吗?您包含的任何头文件是否在struct
或class
结尾处缺少分号?或者缺少右括号或大括号?此文件是肺结节分割项目的一部分。作为此项目的新成员,我必须编译这些文件以生成用于分割肺结节的Matlab mex插件。在changeanalysis.cpp文件中,仅包含头文件aef_global_dllexport.h。错误出现在头文件(aef_global_dllexport.h)的那些行中函数的输出有一个DLLEXPORT。这与我在mac上工作而没有Visual Studio这一事实有关吗?难道不是VC++唯一的东西吗?我想。那么,我现在应该怎么做?我应该在windows上编译这些文件吗?