1.错误的描述及解决办法

使用Matlab和C++混合编程时,即编写完mex文件,调用时,经常会提示下面的错误:

触发上述错误的情况:

1.如果一进入mexFunction函数就报错,即不会命中函数中设置的任何断点,也会报错,那么说明,你忘记了将mex -O 改称为mex -g,并且程序本身也有问题。

2.mex指令编译mex文件时,链接使用的库不对(虽然可以编译成功),,但在使用时也会报错,例如在mexFunction中使用String等其他类型不会报错,一使用Mat对象就会报错,原因是应该使用opencv的release版本的库,却使用了OpenCV的debug版本的库。

3. mex文件在.m文件中调用,第一次运行.m文件不会报错,第二次运行.m文件就会触发mex文件中的错误。

4. 更加离谱的是:mex文件在.m文件中调用,多次运行不会报错。但是,如果在另外一个.m文件中调用含有mex文件的.m文件,则会发生,多次运行另外一个.m文件会触发错误。

5. 或者还存在其他千奇百怪的错误。

那么怎么解决这样的问题呢?

千万不要指望通过调试mex文件的方式来解决。即通过将mex文件通过vs打开,并且通过vs将matlab进程添加进去的方式来跟踪,这样可能一无所获,而且一运行到某个地方就会使得matlab崩溃。

http://cn.mathworks.com/help/matlab/matlab_external/debugging-on-microsoft-windows-platforms.html

解决方法:

Matlab报错,肯定是自己程序的原因。如变量未初始化就使用了,或者野指针,空指针,或者就是除以0等。万能的解决方法,就是产生同Matlab同样的数据,即利用同样的数据,完全在VS中进行调试,VS编译器会给你一个合理的报错解释,而不像Matlab那样。

其他

Matlab/C++混合编程时,出现:

Matlab has encountered an internal problem and needs to close.

The unsaved information you were working on may be lost. We are sorry for the inconvenience.

Click End Now to close Matlab now.

….

使用VS2010在mexFuntion.cpp文件中设置断点调试时,有时会报错,有时候又可以通过。就有可能会出现这样的情况:使用mex指令对mexFuntion.cpp编译后,在matlab程序中调用该函数,第一次执行时,程序不报错,当在执行第二次时,就会报错。

报错的原因就是,如:空指针,变量为分配内存而使用….

例如:

vector vec;

vec[0]=1;//error, 未分配内存。

vec[1]=2;

mxArray *ptr=mxGetField(prhs[0],0,'name');

//if ptr==NULL或者0

char *strName=mxArrayToString(ptr);

typedef struct person

{

int age;

char name[10];

}Person;

typedef struct man

{

int sex;

Person *p;

}Man;

Man* pMan=(Man *)malloc(sizeof(Man));

//use pMan

pMan->p->age=10;//error,变量age没有分配内存.可以将Man中的成员Person *p改为Person p.

2.在mex.cpp文件的入口函数mexFunction处设置断点,但是程序不跑断点直接出错原因是在mex编译的时候,需要将mex -o改成 mex -g。(有时候改来改去忘了改回来,经常犯这样的错误)。

3.在使用compile.m文件对mex.cpp进行编译的时候,有时候编译能够成功,而且还通过了,但是在进行调试的时候会出现莫名其妙的错误,同上一样也是出现下面的错误:

Matlab has encountered an internal problem and needs to close.

此时,如果不是上面类似的内存泄漏的话,那问题就在于compile.m的编译了。

例如,在compile.m文件中用到了OpenCV的lib,我们采用了带d的:

opencvLibs = ' -lopencv_core249d -lopencv_highgui249d -lopencv_imgproc249d ';

则程序调用plhs[0]=MxArray(mat)时候就会报错,即将mat类型的对象转换为plhs[0]时会报错,但是将plhs[0]=MaxArray(string)时候正常运行,即将string类型的对象转换为plhs[0]时不会报错。然而我将用的OpenCV lib改为:

opencvLibs = ' -lopencv_core249 -lopencv_highgui249 -lopencv_imgproc249 ';

程序正常运行。

matlab has encountered,[万能解决问题]MATLAB has encountered an internal problem and needs to close....相关推荐

  1. matlab has encountered,matlab崩溃,matlab has encountered an internal problem needs to close

    我用VLFeat-0.9.17做分类,刚开始提取的sift特征没问题,后来想试试加一个liop特征,matlab就总崩溃.代码出错部分是这样的:numImages = numel(images) ; ...

  2. matlab多重积分如何使用方法,MATLAB在《高等数学》中的应用_多重积分

    论文导读::MATLAB是矩阵实验室的简称,在图形处理方面表现突出.<高等数学>是大学教育中重要的基础理论课之一,图形在<高等数学>的学习中占有重要的位置.在<高等数学& ...

  3. MATLAB数学建模(一):MATLAB与数学建模

    以下内容为学习笔记,更多的内容请访问原链接:https://mp.weixin.qq.com/s/QVm2bByl5IR2BdZCHmnB7w? MATLAB在数学建模中的使用情况:MATLAB 是公 ...

  4. matlab电磁仿真案例,电磁场matlab仿真实验.doc

    电磁场matlab仿真实验.doc 电磁场 matlab 仿真实验一实验一例 7-5试分析一对等量异号的电荷周围空间上的电位和电场分布情况.分析将等量异号的电荷的几何中心放置于坐标原点位置,则它们在空 ...

  5. matlab科学计算及分析,matlab科学计算

    spContent=当前,科学计算已经成为科学研究.技术创新的重要方法与手段,而作为实现工具的科学计算软件无疑具有至关重要的作用.MATLAB为众多领域的计算问题提供了全面的解决方案,代表了当今国际科 ...

  6. matlab 自定义对象,面向对象:MATLAB的自定义类 [MATLAB]

    这几天刚刚开始学习MATLAB的面向对象编程.以前做的事情都是用MATLAB写一些简单的脚本或者函数,这方面MATLAB成熟的函数和直截了当的矩阵运算方法和语法都很容易上手,方便人专注于算法本身.前几 ...

  7. matlab负荷预测,负荷预测matlab

    本文主要针对BP 神经网络 应用于电力系统短期负荷预测做了进一步的研究,并通过MATLAB设计BP神经 网络,仿真结果表明BP神经网络在短期负荷预测中的应用是可行的,能较好...... MATLAB ...

  8. matlab的实用与仿真,MATLAB建模与仿真实用教程

    前言 第1章MATLAB建模基础 1.1 MATLAB简介 1.1.1 MATLAB的安装 1.1.2 MATLAB通用命令 1.1.3 MATLAB应用窗口简介 1.2 MATLAB数学建模概述 1 ...

  9. Matlab篇(二)MATLAB中addpath的用法 (转)

    MATLAB help 中的语法: addpath('folderName1','folderName2','folderName3' ...) addpath('folderName1','fold ...

  10. Matlab之DNN:基于Matlab利用神经网络模型(epochs=10000000)预测勒布朗詹姆斯的2018年总决赛(骑士VS勇士)第一场得分、篮板、助攻

    Matlab之DNN:基于Matlab利用神经网络模型(epochs=10000000)预测勒布朗詹姆斯的2018年总决赛(骑士VS勇士)第一场得分.篮板.助攻 目录 输出结果 预测勒布朗詹姆斯的20 ...

最新文章

  1. 计算机科学技术作文600,生活因科技而精彩作文600字
  2. ossweb上传 php_php - ftp 上传文件到远程服务器
  3. 利用SQL语言表达复杂查询
  4. 前端技巧-JS元编程ES6 symbol公开符号
  5. HTML边框为零,html – 保证金,填充,边框全部为零后仍有空格?
  6. 分布式锁(Redisson)-从零开始,深入理解与不断优化
  7. 阮一峰react demo代码研究的学习笔记 - demo4 debug - create element and Render
  8. nunjucks渲染富文本解析错误输出字符串而不是元素
  9. csdn上传图片发现:缺少图像源文件地址
  10. 配置豪华的 Windows 开发环境
  11. python time时间戳和格式化日期_[转] Python之time模块的时间戳、时间字符串格式化与转换...
  12. MySQL-第十四篇事务管理
  13. CSDN账号注销的问题:手机号注册的CSDN号是可以注销的
  14. Power Apps 中显示 SharePoint Online 数据
  15. 流程图,NS图,伪代码
  16. usb摄像头android录像软件,USB摄像头app
  17. openstack里给云主机配置vip
  18. 一个老程序员的教诲(2)
  19. lesson5: C++11
  20. 【Java】我的世界Java版外挂制作 [4] - 移动类模块合集

热门文章

  1. Linux——文件管理(文件系统、目录管理、文件操作)
  2. 中国居民身份证号码验证
  3. linux按行分割文件,按行切割大文件(linux split 命令简版)
  4. 析构之后:万物重生! 小岚Rabbit_Radish(兔仔_萝卜)
  5. 关于抢火车票的那些事儿(一)
  6. linux系统——窗口管理器和桌面环境的区别
  7. python豆瓣历史评分_python快速查豆瓣评分
  8. 分享 百度网盘搜索引擎原理以及实现部分源码
  9. 如何控制cpu资源使用?
  10. Android 的 getIntExtra(name, defaultValue)里 defaultValue是什么意思