Matlab 中的 Visual Studio 2012 编译器更新
Posted
技术标签:
【中文标题】Matlab 中的 Visual Studio 2012 编译器更新【英文标题】:Visual Studio 2012 Compiler Update in Matlab 【发布时间】:2013-04-09 04:36:33 【问题描述】:Visual Studio 2012 编译器 2012 年 11 月 CTP (VS2012+) 提供对新 C++11 功能的访问。我想使用 VS2012+ 从 Matlab 2013a 构建 mex 文件; Matlab 2013a 支持普通的VS2012。 VS2012+可以制作Matlab 2013a吗?
Visual Studio 2012 编译器 2012 年 11 月 CTP: http://www.microsoft.com/en-us/download/details.aspx?id=35515
其他信息: 在 Visual Studio 2012 中,编译器更新通过进入项目设置激活,然后选择平台工具集为“Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)”。默认平台工具集是“Visual Studio 2012 (v110)”。我本来希望在编译器或链接器开关中看到这一点,但我无法发现任何差异。关键问题是如何通知 Visual Studio 2012 从命令行执行相同的操作。
【问题讨论】:
您是否尝试过使用mex -setup
选择新的编译器?如果是这样,会发生什么?
您可以在 Visual Studio 2012 和 Visual Studio 2010 之间进行选择。
我会假设 VS2012+ 编译器将取代之前的 VS2012 编译器。您是否尝试过选择它并编译依赖于新功能的东西,看看它是否有效?在您的问题中包含此类信息会很有用。
VS2012 支持多平台工具集,因此可以存在多个版本的编译器;编译器没有被替换。我添加了有关此的信息。
【参考方案1】:
Visual Studio 2012 Compiler Nov 2012 CTP 是一个单独的可执行文件,位于
C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2012 CTP
bin 子目录包含 cl.exe,它是新的编译器。 Visual Studio 2012 安装目录中存在同名文件。要使 Matlab 引用更新的编译器,请打开(在纯文本编辑器中)文件
C:\Program Files\MATLAB\R2013a\bin\win64\mexopts\msvc110opts.bat
并在编译器参数之前添加以下内容:
rem Override the compiler selection.
set COMPILERUPDATEDIR=C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2012 CTP
set PATH=%COMPILERUPDATEDIR%\bin\amd64;%COMPILERUPDATEDIR%\bin;%PATH%
这是可行的,因为 cl.exe 在 PATH 变量中是从左到右搜索的。
本地与全局选项文件
请注意,mexopts 目录中的选项文件不是由 Matlab 直接使用的;相反,它们被获取本地副本,然后将它们用作实际的选项文件。运行时
mex -setup
Matlab 获取全局选项文件的本地副本,并将其放置在可以通过运行带有 -v 选项的 mex 获得的目录中。这是默认选项文件。因此,如果您使用的是默认选项文件,则需要运行 mex -setup 来查看更改。
或者,您可能希望自己获取全局选项文件的本地副本,然后通过 mex 中的 -f 选项指定选项文件。这样就不需要修改官方的options文件了。
【讨论】:
你知道我必须为matlab 2011b修改什么文件才能找到visual studio 2012吗? 也许吧。看看我为Matlab 2013 and Visual Studio 2013/2015 做了什么。看看你是否可以按照同样的方法,创建你自己的相应文件。以上是关于Matlab 中的 Visual Studio 2012 编译器更新的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 或 g++ 上运行 Matlab Coder 输出项目
有没有办法在Visual Studio或MATLAB中“映射”程序执行顺序?
在 Visual Studio 2010 (C++) 中集成 MATLAB 代码