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与Matlab2018b混合调试mex文件VS2017会自动创建预编译头,若不使用则在项目配置中禁用即可。
  2. 配置项目,修改生成可执行文件类型(默认为dll,修改成mexw32或mexw64,依matlab版本而定),添加matlab的包含路径以及库路径,添加使用到的库VS2017与Matlab2018b混合调试mex文件VS2017与Matlab2018b混合调试mex文件VS2017与Matlab2018b混合调试mex文件VS2017与Matlab2018b混合调试mex文件注:项目属性配置的平台要和编辑器中的平台一致才会生效
  3. 添加并编辑模块定义文件VS2017与Matlab2018b混合调试mex文件VS2017与Matlab2018b混合调试mex文件
  4. 编译,若成功会看到如下输出VS2017与Matlab2018b混合调试mex文件

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

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

三、在VS中调试mex文件

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

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