MATLAB和c++混编 调试相关内容

https://wenku.baidu.com/view/6fd2cf55cfc789eb162dc857.html?qq-pf-to=pcqq.c2c   原网址

在Matlab 中调试用C/C++编写的MEX 文件(32、64位机,VS2005和matlab R2010b) mex文件是matlab提供的与外部语言如C、C++提供的接口函数。可以在Matlab环境下编写一个*.m文件,来编译所定的C/C++文件,当然,这个C/C++文件的开头是有要求的。Mex函数有固定的自己的一套接口形式 以VS2005和matlab R2010b 7.11.0版本为例,C/C++文件在matlab编译格式为*.mexw32,准备好你的C/C++文件后:

  [1]、matlab安装mex编译工俱 命令如: mex –setup 编译工具选择:VS2005;一路yes下来。最后,只要不报错就可以。 

  [2]、在matab环境中,编写编译文件compile_mex.m 把C/C++文件编译成*.mexw32文件时,要使用mex –g命令,产生具有调试信息的执行文件。而不是mex –o命令,后者             是不含调试信息的。

       compile_mex.m文件内容如下; 

       function compile_mex(debug_flag)      (看原文)

       在命令行执行: debug_flag =’1’, compile_mex(debug_flag)

       mex  –g  filename .c  生成了:filename .mexw32和filename.mexw32.pdb; 如果不需要产生调试信息: 在命令行做无参数执行: compile_mex 生成了:filename .mexw32,但没有生成filename.mexw32.pdb; 

     [3]、确定matlab打开。 

     [4]、VS2005设置: 打开VS2005,而后打开*.mexw32所对应的C/C++文件,不用建立新的工程。

             找到“调试”或“工具”下拉项:attach to processor(附加到处理器)选择matlab.exe进程,确定即可。此时可以看到VS2005是处于运行状态的。

             在C/C++文件中,就你所关心的程序处设置断点。 

     [5]、打开matlab下要运行的程序,先在matlab调用*.mexw32文件的那个地方设个观察断点。运行matlab程序。 

     [6]、matlab先停在你的matlab调用处,再继续执行程序。自动跟到VS2005中设定的断点。(自动从matlab跟入VS2005),可以使用单步,逐步,跳出等调试手段,还可以               把 变量添加到观察窗口,和VS2005下的操作雷同。但不具备所有功能。

     [7]、按F5 运行完c++程序的剩余部分,并从VS回到MATLAB界面。

     [注释]、*.mexw32文件,*.mexw32.pdb文件和C/C++源文件,*.m文件最好都放在一个文件夹下。

猜你喜欢

转载自blog.csdn.net/zhangyake1989/article/details/78647130