在VS2013中调试mex文件

3 篇文章 0 订阅

上一篇简单介绍了一下怎么创建一个mex function并在Matlab中编译它,但是怎么在VS2013中进行Debug?


1. 有了包含mexfunction的cpp或c还不够,还需要建立一个工程,这里是新建一个DLL:VS->新建->win32项目->DLL。

2. 由于是64位机,所以需要把Project设置成x64 Debug,视图->属性管理器->双击Project->配置管理器->平台->选择x64

3. 由于mex function需要一些mex的头文件,比如mex.h,因此需要在项目中设置包含目录:

视图->属性管理器->双击“Debug->Win64”->配置属性->VC++目录->包含目录->敲入C:\Program Files\MATLAB\R2014b\extern\include(本文例)

注:这个比右键项目->属性一劳永逸,否则每个不同的项目都要重新设置一遍。

4. 上一篇讲了用mex functionname来编译一个mex文件,但那个文件不可以在VS中debug,如果想Debug,就要用mex -g。编译后你会发现,目录中除了mexw64文件外,还多了一个mexw64.pdb。

5. 在VS中,Ctrl+Alt+P,选择Matlab作为附加进程(此时会加载一些列符号),设置断点。回到Matlab进行调用,就可以进入断点调试了。

有的时候进入断点后虽然可以单步运行,但mexfunction无法return(可能显示未加载libmex.pdb之类的),我的解决方法是在return之前加入return YP_OUT,YP_OUT是一个mex function的输出参数:

#define	YP_OUT	plhs[0]

如此,便可以向Matlab中返回mex文件的输出参数了。


同时,你可以看到,上述办法并没不需要在VS2013中编译这个DLL,实际上编译和连接都在Matlab中通过mex -g完成了。



  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值