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文件的工作已全部完成。

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 在运行"mex -setup"命令时,如果现"未找到支持的编译器"的错误提示,可能是以下原因导致的: 1. 安装了不受支持的编译器:Matlab在某些版本中只支持特定的编译器。如果您安装了非官方支持的编译器,则可能无法使用mex命令进行编译。解决办法是安装Matlab官方支持的编译器版本。 2. 缺少编译器:mex命令需要依赖于编译器来将C或C++源代码编译为可执行文件。如果您尚未安装任何编译器,或者使用的编译器没有被Matlab识别来,会现此错误。您可以通过安装Matlab支持的编译器或配置Matlab将已安装的编译器识别为默认编译器来解决此问题。 3. 设置错误:有时候,即使已正确安装了支持的编译器,但由于设置错误,Matlab可能无法识别该编译器。您可以通过运行"mex -setup"命令并选择正确的编译器路径来解决此问题。 综上所述,如果在运行"mex -setup"命令时遇到"未找到支持的编译器"的错误提示,您可以尝试以下解决方法:安装Matlab支持的编译器版本、安装编译器或配置Matlab将已安装的编译器识别为默认编译器。 ### 回答2: 在Matlab 2018b中,执行"mex -setup"命令时现"未找到支持的编译器"的错误提示,可能有几个原因导致这个问题。 首先,可能是因为您没有正确安装支持的编译器。在Matlab中使用mex命令需要有支持的编译器,例如Microsoft Visual C++或者MinGW等。您可以检查您的计算机上是否已经安装了这些编译器,并且将它们的路径添加到系统的环境变量中。 另一个可能的原因是您已经安装了支持的编译器,但是Matlab无法正确识别它们。这种情况下,您可以尝试手动配置编译器。首先,找到您安装的编译器的安装路径。然后,打开Matlab并执行"mex -setup"命令。在弹的对话框中,选择"使用现有的编译器"选项,并在"编译器位置"字段中输入您编译器的安装路径。然后,按照提示完成设置。 最后,如果您仍然无法找到支持的编译器,可能是因为您的Matlab版本与编译器不兼容。某些版本的Matlab可能需要特定版本的编译器才能正常工作。在这种情况下,您可以尝试升级Matlab或者更换支持的编译器。您可以在Matlab的官方网站上查找有关兼容性的更详细信息。 总之,要解决"mex -setup 未找到支持的编译器"的问题,您可以检查编译器的安装情况、手动配置编译器或者升级Matlab版本,并确保Matlab与编译器的兼容性。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值