VS2017与Matlab2018b混合调试mex文件

最近刚刚接触在vs中编写s-function,在“s-function does not exit“ 和调试时无法命中断点的问题上折腾了一天,
终于搞清楚怎样配置避免这两个问题。环境:VS2017 + Matlab2018b
(本文中的示例程序使用的是matlab库中的sfun_counter_cpp.cpp中的程序,使用前添加MATLAB_MEX_FILE宏)
——————————————————————————————————————————————————

一、在VS中建立工程

  1. 新建项目,选择dll类型在这里插入图片描述VS2017会自动创建预编译头,若不使用则在项目配置中禁用即可。
  2. 配置项目,修改生成可执行文件类型(默认为dll,修改成mexw32或mexw64,依matlab版本而定),添加matlab的包含路径以及库路径,添加使用到的库在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述 注:项目属性配置的平台要和编辑器中的平台一致才会生效
  3. 添加并编辑模块定义文件在这里插入图片描述在这里插入图片描述
  4. 编译,若成功会看到如下输出在这里插入图片描述

二、将mex文件加载到simulink模型文件并执行

1.将mex文件所在目录添加至matlab的搜索路径(这一步很重要,若不添加,运行模型时会出现s-function不存在的错误在这里插入图片描述
2.建立simulink模型文件,加载刚刚生成的mex文件,正确设置参数在这里插入图片描述
运行时遇到了如下错误:在这里插入图片描述
修改模型文件名称即可。在这里插入图片描述
运行成功。

三、在VS中调试mex文件

1.在Matlab搜索路径中添加源文件路径(若不添加无法触发断点在这里插入图片描述
2.在VS中选择”附加到进程“,选择当前模型文件窗口在这里插入图片描述
注:每次附加到进程前应重新编译工程,并且在附加到进程之前不要运行模型文件,否则会出现不能进入断点的问题
3.运行模型文件,成功进入断点在这里插入图片描述

至此,vs与matlab混合调试mex文件的工作已全部完成。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值