【发布时间】:2015-01-26 21:12:35
【问题描述】:
我正在尝试将 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 中使用 &destination,代码可以编译并工作,但这并不是我想要的。相反,我希望将变量“var”的值复制到数组“x”中。 谁能帮帮我。 非常感谢, //苏海尔
【问题讨论】:
-
我不明白你在做什么。
var是一个指向数组的常量指针,所以var的值就是它的第一个元素的地址。你是说要将第一个元素的地址复制到destination中?