MATLAB-C接口:memcpy上的访问冲突错误

时间:2014-11-28 08:41:17

标签: c++ matlab memcpy

我正在尝试将C ++代码与MATLAB连接。我只想使用memcpy将变量复制到MATLAB数组中。但这会导致访问冲突错误:

MATLAB_C_connection.exe中0x009a1043处的未处理异常:0xC0000005:访问冲突写入位置0x00000000。

这是我使用的C ++代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <matrix.h>
#include "engine.h"
#include "coupled_cfd.h"
#include "mex.h"
#include "mclmcr.h"
#include "mclmcrrt.h"
#include "mclcppclass.h"

#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
#pragma comment(lib, "libmex.lib")
#pragma comment(lib, "libeng.lib")
#define  BUFSIZE 256


int main()
{
    Engine *ep;
    mxArray *x = NULL, *result = NULL;
    char buffer[BUFSIZE+1];
    double var[1] = {5};

    double *destination;

    ep = engOpen(NULL); //ep = engOpen("\0");
    x = mxCreateDoubleMatrix(1, 1, mxREAL);

    destination = mxGetPr(x);
    memcpy(destination, var, sizeof(double));

    //engPutVariable(ep, "X", x);
    //engEvalString(ep, "D = X");
    //engEvalString(ep, "plot(X,D)");
    //engEvalString(ep, "close;");

    std::cout << var[0];
    system("PAUSE");
    mxDestroyArray(x);
    engClose(ep);
    return 1;   
}

奇怪的是,如果我在memcpy中使用&amp; destination,代码会编译并运行,但这并不是我想要的。相反,我想要变量的值&#34; var&#34;被复制到数组&#34; x&#34;。 有人可以帮我吗。 非常感谢, // Soheil

1 个答案:

答案 0 :(得分:0)

x是数组类型。要获得指向矩阵数组内值的位置的指针,您必须指定它。

请尝试destination = mxGetPr(x[0]);