错误:令牌之前'('预期的构造函数、析构函数或类型转换?
error: expected constructor, destructor, or type conversion before '(' token?
我正在尝试使用mex (changeanalysis.cpp)编译cpp文件。我有Matlab R2012a, MAC OS X 10.7上的Xcode 4.6。在changeanalysis.cpp文件中,包含了aef_global_dlexport .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:
/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 7:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 13:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 17:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 20:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 22:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 24:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 29:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 31:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 50:错误:在'('令牌
之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/MATLAB/aef_global_dllexport.h: 75:错误:在'('标记之前预期的构造函数、析构函数或类型转换/用户/marzi/文件/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
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- new[] / delete[] 并在C++中抛出构造函数/析构函数
- 创建/向容器添加对象时如何使用构造函数/析构函数
- LNK2019构造函数/析构函数使用 C++ Dll
- 有人可以解释一下这里发生了什么(类和构造函数/析构函数)吗?
- 带智能ptr的Pimpl-为什么需要构造函数/析构函数
- 需要构造函数/析构函数/类型转换错误
- Boost共享指针构造函数/析构函数
- 通过值或引用调用时未调用构造函数/析构函数.不管怎样
- C++构造函数析构函数中的奇怪行为
- 构造函数/析构函数链接错误
- 在模板化函数中调用具有特征的显式构造函数/析构函数
- c++构造函数/析构函数
- 为什么赋值的成本不能保证小于构造函数-析构函数对
- 重写默认构造函数/析构函数而不实现它们
- 使用自定义分配器调用对象构造函数/析构函数
- 涉及类和结构的构造函数/析构函数
- 在抽象构造函数/析构函数中调用纯虚拟函数安全吗
- 如果在没有限定的情况下从构造函数/析构函数调用虚拟函数,则是否会发生虚拟调度
- C++基于堆栈的构造函数/析构函数无法按预期工作