mwArray用法

qinshou4 2013-01-16 08:24:01
我用C++调用Matlab中函数,编译能通过,但是运行就有问题。
问题出现在对mwArray的用法上。只要定义mwArray变量,断点调试时就有错误框弹出

提示:任务.exe 中的 0x00000000 处有未经处理的异常: 0xC0000005: Access violation

求大神指导~~感谢万分。。。
...全文
17354 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
暴走团团长 2015-09-25
  • 打赏
  • 举报
回复
同求 现正 VS2010 +MATLAB 2010b编译中 遇到以上内存冲突的问题
tianyian125 2015-09-01
  • 打赏
  • 举报
回复
问题最后怎么解决的?我也遇到了
access_p 2015-08-19
  • 打赏
  • 举报
回复
加一段分配内存的代码
  • 打赏
  • 举报
回复
方法1:
vs2008+matlab2010a 32位台式机上
结果:成功
我用的是vs2008 和matlab2010a 在32位的A电脑上没有问题(电脑安装有matlab) 可以用c++调用matlab 的函数,没有问题。

方法2:
vs2008+matlab2011a 32位台式机上
结果:失败
我又换到B电脑上(同样的32位,但是这次matlab是2011a的),程序编译没有问题,但是调试就会出错,,调用mwaray 出现错误
错误部分如下:

 mwArray(mwSize num_rows, mwSize num_cols, mxClassID mxID, mxComplexity cmplx = mxREAL) : m_pa(0)
{
if (mclGetMatrix((void**)&m_pa, num_rows, num_cols, mxID, cmplx) == MCLCPP_ERR)
mwException::raise_error();
validate();
}



方法3:
vs2008+matlab相应的必备库文件 32位台式机
结果:失败
在网上看资料,说可以脱离matlab环境,把matla相应的库文件和函数拷到c++程序目录下,之后c++直接调用matlab的函数。
将相应的配置了之后,运行的错误和方法2相同。

方法4:
color=#FF0000]vs2008+matlab2010a[/color] 64位笔记本
结果:失败

出现的问题和方法2相同。 网上说64位的混合编程比32位的更麻烦,还是先把32位的解决再说64位的吧


也在网上查了很多的资料,大部分人都出现了这样的错误,但是没有人真正的可以解决它。

大家看看,攻克它吧!!!

个人认为:可能是问题出现在mwarray这个函数初始换对象,和内存分配、空指针这一块了。
micheal_yu 2015-06-16
  • 打赏
  • 举报
回复
首先要调用初始化函数 ***Initialize(),在.h头文件中可以看到该初始化函数的名字。然后才能使用mwArray定义变量; 比如: CString str;//初始化函数,如果初始失败,刚提示并返回 if(! myFunInitialize()) { str.Format(_T("myFunInitialize failed!\n")); MessageBox(str); return ; } mwSize mdim[3] ={ima0.rows,ima0.cols,3}; mwArray mImage0(3,mdim,mxDOUBLE_CLASS);
风影1012 2015-03-31
  • 打赏
  • 举报
回复
我遇到过,编译器版本不正确,用的是lcc编译的,放在vs2008里编译通过,但是一运行就崩,换成vc6.0编译器编译就可以了。
ospifvax 2014-06-25
  • 打赏
  • 举报
回复
好像有create什么matrix函数, 然后返回mxArray指针再用, 如果返回给matlab就不用释放,否则还要释放
ospifvax 2014-06-25
  • 打赏
  • 举报
回复
mxArray是不是要create啊
a392572957 2014-06-10
  • 打赏
  • 举报
回复
如10楼和12楼所言,问题能解决,
鸭子飞 2014-05-12
  • 打赏
  • 举报
回复
请问是否解决了这问题?我也遇到同样的问题,求助!!! 并且我也加入了初始化程序
旷世奇才caiqi 2014-04-06
  • 打赏
  • 举报
回复
我的也是这里出问题了mwArray t(0.1);//zhe jv hua you wen ti text4.exe 中的 0x00000000 处未处理的异常: 0xC0000005: Access violation 有个绿色的箭头指向下面这句 : if (mclGetScalarDouble((void**)&m_pa, re, 0, mxREAL) == MCLCPP_ERR) explicit mwArray(mxDouble re) : m_pa(0) { if (mclGetScalarDouble((void**)&m_pa, re, 0, mxREAL) == MCLCPP_ERR) mwException::raise_error(); validate(); } (据说有未分配地址的指针,但我找不到指针在哪里)各位大神有好办法没有啊
fesito 2013-04-21
  • 打赏
  • 举报
回复
我顺便想问下,如何将mwarray传递给matlab空间中的变量?
SUN_DRAGON 2013-04-18
  • 打赏
  • 举报
回复
// 初始化程序 if( ! mclInitializeApplication(NULL,0) ) { fprintf(stderr, "Could not initialize the application.n"); exit(1); } // 初始化库 if (! lib*******Initialize() ) { fprintf(stderr,"Could not initialize the library.n"); exit(1); }
jingfuzhifuu 2013-01-24
  • 打赏
  • 举报
回复
再加上 ****initialize() ****代表你的函数
jingfuzhifuu 2013-01-24
  • 打赏
  • 举报
回复
在程序开始处加上 mclInitializeApplication(NULL,0); 这句话试试
jingfuzhifuu 2013-01-24
  • 打赏
  • 举报
回复
怎么回事 我也遇到这个问题了 头疼啊 搞了一天啊 压力太大了
chxlj 2013-01-22
  • 打赏
  • 举报
回复
这个问题我遇到过,好像是添加进去***Initialize()和***Terminate()就可以了
qinshou4 2013-01-16
  • 打赏
  • 举报
回复
这是我的部分代码: MatrixXi A2 = -A1*(R+G); MatrixXi P; MatrixXi Z = A1*G; mwArray z(n,m2,mxINT16_CLASS);//当程序执行这条语句时.exe文件就停止了 for(i=0;i<n;i++) for(j=0;j<m2;j++) z(i+1,j+1)=Z(i,j); 并且有绿色箭头指向mclcppclass.h文件的这里: mwArray(mwSize num_rows, mwSize num_cols, mxClassID mxID, mxComplexity cmplx = mxREAL) : m_pa(0) { if (mclGetMatrix((void**)&m_pa, num_rows, num_cols, mxID, cmplx) == MCLCPP_ERR) mwException::raise_error(); validate(); }
qinshou4 2013-01-16
  • 打赏
  • 举报
回复
编译成功 就是断点设在mwArray z(n,m1,mxINT16_CLASS);之前,程序运行正常,再设一个断点在该语句之后,接着运行就有问题,也就是执行这条语句时有问题,然后弹出对话框,提示 任务.exe 中的 0x00000000 处有未经处理的异常: 0xC0000005: Access violation 在网上也查了,好像是空指针问题,我不懂,呵呵
快乐鹦鹉 2013-01-16
  • 打赏
  • 举报
回复
能调试进去么?
加载更多回复(4)

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧