我正在尝试将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
答案 0 :(得分:0)
x是数组类型。要获得指向矩阵数组内值的位置的指针,您必须指定它。
请尝试destination = mxGetPr(x[0]);
。