vc和matlab混合调试mex文件
来源:互联网 发布:淘宝店铺哪里购买 编辑:程序博客网 时间:2024/04/30 05:10
1.调试环境:vs2008,matlab2011a。
2.步骤:
(1)在matlab中通过 ”mex -setup“通过命令为matlab指定编译器,针对本人环境就是vs2008。这里如果出现找不到编译器的情况,可在”Would you like mex to locate installed compilers [y]/n?“选择n,然后从出现的编译环境中选择。安装顺序应是先vs,后matlab。
(2)创建MFC DLL工程,工程名MexDemo,按默认的选项就可以,不用作任何选择。
(3)MexDemo属性页,在链接器-输出文件中,把输出文件改为mexw32,64位的改为mexw64。
(3)工程创建完后,把所有有关的文件添加到工程中。文件内容包含"mexFunction()"函数的xxxmex.c文件,和这个.c文件中include的所有.h和.c文件。
(4)把所有的.c文件改名为.cpp,并在内容前面加入#include stdafx.h。
(5)打开MexDemo.def文件,加入”mexFunction“,格式如下:
(6)编译整个工程,调试工程,出现如下窗口时,点取消即可,这时在工程的debug文件下就会生成MexDemo.mexw32文件(工程有两个debug文件夹,生成在外面的。当然也可设置生成mexw32文件的位置)实际上也是dll文件,稍后matlab就是调用这个文件。
(7)打开matlab,不要打开多个matlab应用程序。
(8)在MexDemo工程中,选择工具-附加到进程,在打开的窗口选择Matlab,将在mexFunction函数中设置断点。如果没有先打开matlab,这步会找不到Matlab.exe项。设置的断点如果显示黄色感叹号,不能触及,不要理会,直接执行下步。
(9)在matlab中将断点设置在要调用mex文件的语句上,比如要执行的函数名是tmp(a1,a2),然后单击"Current Folder"目录选择框,将当前的工作目录转换到MexDemo工程的debug目录下,其中包含MexDemo.mexw32文件。
(10)在(9)中有可能会遇到个问题,就是MexDemo工程生成的MexDemo.mexw32文件的文件名与matlab要调用的mex文件的文件名不相同,出现无法执行的情况,可这样解决。在MexDemo的debug目录下,创建一个.m的文件tmp.m,在tmp.m文件中,加入一个函数,名称为MexDemo(a1,a2)。总的来说就是要让matlab执行mexw32文件,也可提前将工程名设置成函数的名字(这个没试过)。另外大家也可将mexw32 文件的生成目录设成matlab的当前目录相同,就可避免转换目录。
(10)点继续执行,MexDemo中mexFunction函数中的断点就可触发。
3.参考文章:http://www.ilovematlab.cn/thread-42985-1-1.html
- vc和matlab混合调试mex文件
- Matlab & C++ 混合编程mex文件的编写与调试
- matlab和VC++混合编程(mex方法)
- MATLAB的MEX文件编写和调试
- MATLAB的MEX文件编写和调试
- MATLAB的MEX文件编写和调试
- vc++6.0调试mex文件
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex
- VC中单步调试matlab mex程序
- 关于Matlab的MEX技术 10分钟教会你简单的matlab和C/C++混合编程(mex文件)
- MEX文件调试—MATLAB调用C++程序—混合编程
- MEX文件调试—MATLAB调用C++程序—混合编程
- Matlab与VC混合MEX编程之关于mexFunction篇
- Matlab与VC混合MEX编程之关于mexFunction篇
- MATLAB在VC2010中单步调试MEX文件
- Android 导入项目时出现的各类错误(红色感叹号)
- SqlServer父节点与子节点查询及递归
- [Java]读取文件方法大全
- 45+ Free Ebook Download Web Sites of Information Overload
- AMR音频编码器概述及文件格式分析
- vc和matlab混合调试mex文件
- Linux字符设备驱动(二)
- C# 使用SerialPort类设计串口通讯程序
- C#判断数据库中取出的字段值是否为空(NULL)
- 【WebGUI】——IE,Firefox下通用的js触发click事件方法
- 伪随机数生成算法及性能检验
- SQLSEVER中固定排序
- [iphone]Code Sign error: Provisioning profile XXXX can"t be found
- hdu 1857 Word Puzzle