matlab里面没法单步调试mex函数,故需转到VS上面调试,这里采用VS2010。html
参考网上不少人写的方法但都很乱,杂,试了屡次都没有成功。今天终于解决了,现把方法记录下来。函数
一、VC中编写Mex函数spa
新建一个win32 dll 空项目。线程
二、添加源文件Test.cpp,编写MEX函数,MEX函数编写方法这里不赘述了。调试
三、配置项目属性。 htm
打开项目属性配置页,C++ -> 附加包含目录 加入MATLAB安装目录下的 \extern\include 路径。blog
链接器 -> 附加库目录 加入MATLAB的 \extern\lib\win32(win64)\microsoft 路径。get
链接器 -> 输入 -> 附加依赖项 输入libmx.lib libeng.lib libmat.lib libmex.lib 这四个lib文件。编译器
在Linker-General-Output File:改为it
.\Debug\(ProjectName).mexw32(mexw64)(64位系统相应改为64)
Source Files- Add - New Item新建模块定义文件Test.def
并为其添加内容
LIBRARY ;"Test"
EXPORTS mexFunction
在Linker-Input-Module Definition File添加:Test.def
matlab是 64位的话,VS编译器必须为64位,须要手工调整!
四、F7生成解决方案,若是以上都正确,便会在工程Debug目录下生成一个(ProjectName).mexw32文件。
五、在VS中单步调试MEX函数。
将matlab的current folder 设置成mexw32文件所在的路径,即Debug目录。(这步很是重要,要不没法调试调用)
vs2010-Tools-附加到线程 Attach to process-选择matlab。