【发布时间】:2023-03-08 23:01:01
【问题描述】:
我正在尝试使用 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:错误: '(' 标记之前的预期构造函数、析构函数或类型转换 /Users/marzi/Documents/MATLAB/aef_global_dllexport.h:100:错误: '(' 标记之前的预期构造函数、析构函数或类型转换
mex:“changeanalysis.cpp”的编译失败。
使用 mex 时出错(第 206 行)无法成功完成。
有谁知道如何解决这个问题或者这个错误的原因是什么?
谢谢。
【问题讨论】:
-
文件
changeanalysis.cpp是您的文件吗?您包含的任何头文件是否在struct或class的末尾缺少分号?或者错过右括号或花括号? -
此文件是肺结节分割项目的一部分。作为该项目的新成员,我必须编译文件以生成用于分割肺结节的 Matlab mex 插件。在文件 changeanalysis.cpp 中,仅包含头文件 aef_global_dllexport.h。
-
错误出现在头文件 (aef_global_dllexport.h) 的那些行中,其中有一个 DLLEXPORT 作为函数的输出。这是否与我正在使用 mac 并且没有 Visual Studio 的事实有关?
-
_declspec不是 VC++ 唯一的东西吗? -
我想。那么,我现在该怎么办?我应该在 Windows 上编译这些文件吗?