动态数组分配:.mexw64不是有效的win32应用程序

时间:2017-09-28 21:51:17

标签: c++ arrays matlab

我正在将我的C ++程序翻译成MEX文件。我正在使用Matlab编辑器并从Matlab命令窗口进行编译。我的Matlab版本是win64,编译器是minGW-w64。我的文件结构如下:

void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
    RandomWalkMH_mex();
}

其中RandomWalkMH_mex()相当于原始C ++程序中的main(),并调用所有其他函数。

文件运行正常,直到我在函数RandomWalkMH_mex()中声明动态2D数组。我做声明的方式与数组的标准C ++声明相同:

void RandomWalkMH_mex(){

    ...

    double** parasim = new double*[nsim];
    for(int i = 0; i < nsim; ++i){
        parasim[i] = new double[npara];
    }

    ...

    for(int i = 0; i < nsim; ++i){
        delete [] parasim[i];
    }
    delete [] parasim;

    ...

}

MEX文件仍然可以编译成.mexw64文件,但是当我通过MATLAB命令窗口运行[y] = RandomWalkMH_mex(1000)测试运行代码时,我收到错误:

  

无效的MEX文件'... \ RandomWalkMH_mex.mexw64':.... \ RandomWalkMH_mex.mexw64不是有效的Win32应用程序..

有谁知道为什么会这样?我用Google搜索相关答案,但找不到解决我问题的答案。我也研究过使用Dependency Walker,但我不确定它是否对Windows 10有用..

0 个答案:

没有答案