为 MATLAB 使用 Visual Studio 2013 的 C 编译器

Posted

技术标签:

【中文标题】为 MATLAB 使用 Visual Studio 2013 的 C 编译器【英文标题】:Using Visual Studio 2013's C compiler for MATLAB 【发布时间】:2014-05-26 10:55:54 【问题描述】:

我使用mex -setup 命令将 Visual Studio 2013 添加为 MATLAB 的默认 C 编译器。我使用在 Internet 上找到的下载文件添加了 Visual Studio 2013,并附有以下说明。

The files 
  * msvc120engmatopts.bat
  * msvc120opts.bat
  * msvc120opts.stp
should be copied to C:\Program Files\MATLAB\R2013a\bin\win64\mexopts .

The files 
  * msvc120compp.bat
  * msvc120compp.stp
should be copied to C:\Program Files\MATLAB\R2013a\bin\win64\mbuildopts .

我的MATLAB版本是R2011b,所以我适当地替换了路径。

这是我用它来运行一个 C 函数来验证编译器是否已经链接。

Log File

我是从这个answer了解到这个方法的。

但是,当我在 Simulink 模型中使用 MATLAB 函数时,我收到以下错误消息,就像我将 VS2013 编译器链接到 MATLAB 之前一样。

Unable to locate a C-compiler required by Stateflow and MATLAB Function blocks.
Use 'mex -setup' to select a supported C-compiler.

【问题讨论】:

您在运行 64 位 matlab 吗? @patrik - 是的,我正在运行 64 位 Matlab。我什至用过 MinGW-64。 这里我不确定,但您可能需要 64 位编译器。 @patrik - VS2013 和 minGW-64 都是 64 位编译器。 你确定VS2013是64位编译器吗?我没用过VS2013,但是从早期版本的经验来看,默认编译器一直是32位编译器。但是,minGW-64 应该可以工作。我不知道。 【参考方案1】:

好的,所以唯一适用于我的MATLAB "R2011b" 版本的是 Microsoft SDK 7.1,因为其他编译器对于 Windows 7 64 位来说太旧了。不支持 MinGW-64 位。虽然它可以在 MATLAB 上运行,但 Stateflow 无法识别它。

所以我刚刚从here 下载了.iso 文件。

如果您在安装 SDK 时遇到任何困难,请尝试this

【讨论】:

其他编译器太旧? Visual Studio 2013 比 MATLAB 2011b 或 Windows 7 更新。

以上是关于为 MATLAB 使用 Visual Studio 2013 的 C 编译器的主要内容,如果未能解决你的问题,请参考以下文章

Matlab 中的 Visual Studio 2012 编译器更新

在 Visual Studio 2010 (C++) 中集成 MATLAB 代码

如何使用 Visual Studio 2010 调试 MATLAB .mex32/.mex64 文件

有没有办法在Visual Studio或MATLAB中“映射”程序执行顺序?

无法将 matlab.exe 进程附加到 Visual Studio 2013 以调试 mex 文件?

MATLAB中Visual Studio“Peek Definition”功能的等价物是什么?