MATLAB-C 接口:内存上的访问冲突错误
MATLAB-C interfacing: Access violation error on memcpy
我正在尝试将C++代码与MATLAB连接起来。我只想使用 memcpy 将变量复制到 MATLAB 数组中。但这会导致访问冲突错误:
MATLAB_C_connection.exe:0xC0000005:访问冲突写入位置0x00000000 0x009a1043未处理的异常。
这是我正在使用的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(" ");
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"中。谁能帮我。非常感谢,索海尔
x是数组类型。要获取指向矩阵数组中值位置的指针,您必须指定它。
请尝试destination = mxGetPr(x[0]);
。
相关文章:
- 使用 EvtSetChannelConfigProperty() 函数时出现访问冲突错误
- cv::resize() 失败并出现访问冲突错误(由 NULL> 处的 <struct 引起)
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 遵循官方 Direct2D 示例,但出现访问冲突错误
- C++ 抛出读取访问冲突错误,但我不确定为什么。平铺滑块益智游戏
- 为什么我的顶点缓冲区对象出现访问冲突错误?
- 销毁 Box2D 主体 - 读取访问冲突错误
- 编译哈希算法时出现内存访问冲突错误
- 使用glCreateBuffers时发生访问冲突错误
- 访问冲突错误在 (而 (info[x] != ))
- 反转字符串 c++ 时出现访问冲突错误
- 我无法弄清楚此访问冲突错误.有人可以在这里帮助我吗?
- 使用内存访问冲突错误
- 读取字符串的字符时出错-访问冲突错误C++
- 创建链接列表时发生访问冲突错误
- 调试优先级队列程序时出现访问冲突错误
- C++LinkedList错误:访问冲突错误
- 为什么我在用SDL2_ttf填充文本时出现访问冲突错误
- MFC:在工作线程中使用对象的成员函数时获取访问冲突错误
- 在C++中使用Box2D物理退出游戏时出现访问冲突错误